class MessageDriver::Adapters::StompAdapter

Attributes

config[R]
poll_timeout[R]

Public Class Methods

new(broker, config) click to toggle source
# File lib/message_driver/adapters/stomp_adapter.rb, line 31
def initialize(broker, config)
  validate_stomp_version

  @broker = broker
  @config = config.symbolize_keys
  connect_headers = @config[:connect_headers] ||= {}
  connect_headers.symbolize_keys
  connect_headers[:"accept-version"] = '1.1,1.2'

  vhost = @config.delete(:vhost)
  connect_headers[:host] = vhost if vhost

  @poll_timeout = 1
end

Public Instance Methods

build_context() click to toggle source
# File lib/message_driver/adapters/stomp_adapter.rb, line 90
def build_context
  StompContext.new(self)
end
stop() click to toggle source
Calls superclass method MessageDriver::Adapters::Base#stop
# File lib/message_driver/adapters/stomp_adapter.rb, line 101
def stop
  super
  @connection.disconnect if @connection
end
with_connection() { |connection| ... } click to toggle source
# File lib/message_driver/adapters/stomp_adapter.rb, line 94
def with_connection
  @connection ||= open_connection
  yield @connection
rescue SystemCallError, IOError => e
  raise MessageDriver::ConnectionError.new(e)
end

Private Instance Methods

open_connection() click to toggle source
# File lib/message_driver/adapters/stomp_adapter.rb, line 108
def open_connection
  conn = Stomp::Connection.new(@config)
  raise MessageDriver::ConnectionError, conn.connection_frame.to_s unless conn.open?
  conn
end
validate_stomp_version() click to toggle source
# File lib/message_driver/adapters/stomp_adapter.rb, line 114
def validate_stomp_version
  required = Gem::Requirement.create('~> 1.3.1')
  current = Gem::Version.create(Stomp::Version::STRING)
  unless required.satisfied_by? current
    raise MessageDriver::Error,
          'stomp 1.3.1 or a later version of the 1.3.x series is required for the stomp adapter'
  end
end