Sha256: 71d2f62617e510e03284d9594940135382a5a701ac018f2d20de3ccd97558979

Contents?: true

Size: 992 Bytes

Versions: 8

Compression:

Stored size: 992 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
        if defined?(java.lang.Thread)
          java.lang.Thread.current_thread.name = 'Heartbeat'
        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

8 entries across 8 versions & 2 rubygems

Version Path
aeden-refinery-0.10.10 lib/refinery/heartbeat.rb
refinery-0.12.2 lib/refinery/heartbeat.rb
refinery-0.12.1 lib/refinery/heartbeat.rb
refinery-0.12.0 lib/refinery/heartbeat.rb
refinery-0.11.0 lib/refinery/heartbeat.rb
refinery-0.10.11 lib/refinery/heartbeat.rb
refinery-0.10.10 lib/refinery/heartbeat.rb
refinery-0.10.9 lib/refinery/heartbeat.rb