class TorqueBox::Stomp::JmsStomplet
Public Class Methods
new()
click to toggle source
# File lib/torquebox/stomp/jms_stomplet.rb, line 22 def initialize() @connection_factory = TorqueBox.fetch( 'xa-connection-factory' ) @subscriptions = {} end
Public Instance Methods
configure(stomplet_config)
click to toggle source
def xa_resources
@xa_resources
end
# File lib/torquebox/stomp/jms_stomplet.rb, line 31 def configure(stomplet_config) @connection = @connection_factory.create_xa_connection @connection.start @session = @connection.create_session( false ) @xa_resources = [ @session.xa_resource ] end
destination_for(name, type)
click to toggle source
# File lib/torquebox/stomp/jms_stomplet.rb, line 60 def destination_for(name, type) return queue(name) if ( type.to_sym == :queue ) topic(name) end
destroy()
click to toggle source
# File lib/torquebox/stomp/jms_stomplet.rb, line 38 def destroy @session.close @connection.close end
on_unsubscribe(subscriber)
click to toggle source
# File lib/torquebox/stomp/jms_stomplet.rb, line 43 def on_unsubscribe(subscriber) subscriptions = @subscriptions.delete( subscriber ) (subscriptions || []).each do |subscription| subscription.close end end
queue(name)
click to toggle source
# File lib/torquebox/stomp/jms_stomplet.rb, line 50 def queue(name) jms_session = @session.jms_session TorqueBox::Messaging::Queue.new( jms_session.create_queue( name ) ) end
send_to(destination, stomp_message, headers={}, options={})
click to toggle source
# File lib/torquebox/stomp/jms_stomplet.rb, line 74 def send_to(destination, stomp_message, headers={}, options={}) jms_session = @session.jms_session java_destination = @session.java_destination( destination ) producer = @session.jms_session.create_producer( java_destination.to_java ) case ( stomp_message ) when org.projectodd.stilts.stomp::StompMessage content = stomp_message.content_as_string else content = stomp_message end encoded_message = TorqueBox::Messaging::Message.new( @session.jms_session, content, options[:encoding] ) jms_message = encoded_message.jms_message if ( stomp_message.is_a?( org.projectodd.stilts.stomp::StompMessage ) ) stomp_message.headers.header_names.each do |name| jms_name = name.to_s.gsub( /-/, '_' ) header_value = stomp_message.headers[ name.to_s ] jms_message.setStringProperty( jms_name, header_value ) end end headers.each do |name, header_value| jms_name = name.to_s.gsub( /-/, '_' ) jms_message.setStringProperty( jms_name, header_value.to_s ) end producer.send( jms_message ) end
subscribe_to(subscriber, destination, selector=nil, options={})
click to toggle source
# File lib/torquebox/stomp/jms_stomplet.rb, line 65 def subscribe_to(subscriber, destination, selector=nil, options={}) jms_session = @session.jms_session java_destination = @session.java_destination( destination ) consumer = @session.jms_session.create_consumer( java_destination.to_java, selector ) consumer.message_listener = MessageListener.new( subscriber, options ) @subscriptions[ subscriber ] ||= [] @subscriptions[ subscriber ] << consumer end
topic(name)
click to toggle source
# File lib/torquebox/stomp/jms_stomplet.rb, line 55 def topic(name) jms_session = @session.jms_session TorqueBox::Messaging::Topic.new( jms_session.create_topic( name ) ) end