Sha256: 7368a0ecc82ee3493533850bc20a4a7fdf38af6fa059af909fcc94acc380570e

Contents?: true

Size: 1023 Bytes

Versions: 2

Compression:

Stored size: 1023 Bytes

Contents

module Refinery #:nodoc:
  # A heartbeat publisher that indicates a server is alive.
  class Heartbeat
    include Refinery::Loggable
    include Refinery::Configurable
    include Refinery::Queueable
    include Refinery::Utilities
    
    # Initialize the heartbeat for the given server.
    def initialize(server)
      queue_prefix = config['prefix'] || ''
      @server = server
      @thread = Thread.new do
        begin
          require 'java'
          java.lang.Thread.current_thread.name = 'Heartbeat'
        rescue Exception => e
        end
        
        loop do
          with_queue("#{queue_prefix}heartbeat") do |heartbeat_queue|
            logger.debug "Send heartbeat"
            message = {
              'host_info' => host_info,
              'timestamp' => Time.now.utc,
              'running_daemons' => @server.daemons.length
            }
            heartbeat_queue.send_message(Base64.encode64(message.to_json))
            sleep(60)
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
aeden-refinery-0.10.8 lib/refinery/heartbeat.rb
refinery-0.10.8 lib/refinery/heartbeat.rb