XmlBlaster Logo

REQUIREMENT

protocol.stomp

XmlBlaster Logo


Type NEW
Priority HIGH
Status CLOSED
Topic XmlBlaster supports the bidirectional STOMP communication protocol
Des
cription

RPC (remote procedure call) based frameworks like CORBA (if not BiDirectional GIOP), RMI and XmlRpc (if not tunneled) require the client to set up a callback server for asynchronous callbacks. This causes problems if the client is behind a firewall or if the client may not establish a listen socket.

This protocol supports tunneling back messages and supports many programming languages on the client side.

Protocol specification

Please consult http://stomp.codehaus.org/ for more details.

Limitations

Currently only basic operation is implemented on server side, please check the code in org.xmlBlaster.protocol.stomp.XbStompInOutBridge for implementation details. To code a client there is no specific support available in xmlBlaster.
The server side plugin is available for xmlBlaster > 2.0, please use svn to access it.

Details

The stomp message expects the header entries key and qos which are the XML encoded xmlBlaster typical key and qos of a message. The xmlBlaster message content is send as stomp binary content.

Configure

Server side configuration

The driver is activated in xmlBlasterPlugins.xml:

   <!-- ProtocolPlugin[STOMP][1.0] for iPad and iPhone and other programming languages -->
   <plugin create='true' id='STOMP' className='org.xmlBlaster.protocol.stomp.XbStompDriver'>
      <action do='LOAD' onStartupRunlevel='4' sequence='35'
              onFail='resource.configuration.pluginFailed'/>
      <action do='STOP' onShutdownRunlevel='3' sequence='35'/>
      <attribute id='port'>61613</attribute>
   </plugin>

Note: If you configure a property in xmlBlasterPlugins.xml the scope is already inside the specific plugin and you need to leave away the prefix plugin/stomp and for example directly write responseTimeout.
On command line or in xmlBlaster.properties however, the scope is global and you need to write the complete name like plugin/stomp/responseTimeout.

Property Default / Example Description Impl
plugin/stomp/hostname localhost Specify a hostname where the stomp server runs yes
plugin/stomp/port 61613 The stomp server port yes
plugin/stomp/updateResponseTimeout forever When the update() callback method is invoked we wait the given time [milli-seconds] on a response, the value must be bigger than zero, use Integer.MAX_VALUE for an unlimited setting.
The response is the return value or an exception for method invocations which are not marked oneway.
On timeout an exception is thrown which leads on server side to a dead message (depending on the installed error handler).
yes
plugin/stomp/pingResponseTimeout 60000 When the ping() method is invoked we wait the given time [milli-seconds] on a response, the value must be bigger than zero, it defaults to one minute.
The response is the return value or an exception for method invocations which are not marked oneway.
On timeout an exception is thrown which leads on server side to a dead message (depending on the installed error handler).
yes

NOTE: Configuration parameters are specified on command line (-someValue 17) or in the xmlBlaster.properties file (someValue=17). See requirement "util.property" for details.
Columns named Impl tells you if the feature is implemented.
Columns named Hot tells you if the configuration is changeable in hot operation.

Todo
  1. Support 'erase' of topics
  2. Support SSL
  3. Support compression
  4. Add client libraries which support automatical reconnect, SSL and compression
See REQ protocol
See API org.xmlBlaster.protocol.stomp.XbStompDriver
See API org.xmlBlaster.protocol.stomp.XbStompInOutBridge
See API org.xmlBlaster.protocol.stomp.SocketUrl
See http://www.xmlBlaster.org/xmlBlaster/src/java/org/xmlBlaster/protocol/stomp/XbStompInOutBridge.java.html
See Stomp homepage
See xmlBlasterPlugins.xml

This page is generated from the requirement XML file xmlBlaster/doc/requirements/protocol.stomp.xml

Back to overview