activemq-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "James Strachan" <>
Subject Re: Writing a custom (non-JMS) TCP protocol
Date Thu, 23 Oct 2008 07:32:21 GMT
2008/10/23 Andy Gross <>:
> I'm currently using ActiveMQ in a mixed-language environment.   For the
> non-Java clients, I hacked the Ajax/MessageListener servlet modules to
> produce JSON and wrote clients using the HTTP client/JSON libraries of the
> respective languages (basically translations of the Ajax long-poll example
> in _amq.js).
> The mismatch between HTTP and JMS semantics, as well as the wierdnesses that
> arise with HTTP servers, proxies and client libraries makes this approach
> suboptimal.   I'd like to develop a custom JSON over TCP protocol that
> encapsulates the subset of JMS that we need.   In other words, I'd like to
> embed an NIO framework like Xsocket inside ActiveMQ and write connection
> handlers for my protocol just like one writes Jetty servlets in the default
> distribution.
> I've searched the wiki and mailing list archives pretty well and haven't
> seen this question come up.  Any help (including pointers to code) would be
> most appreciated.

We created the Camel project for exactly this purpose - bridging
between (say) JMS and any other protocol; be it a custom one or other
ones like files/ftp/http/xmpp/fix etc.

So for example you could use the MINA component

and extend it to add in your own protocol codec (how to
marshal/unmarshal messages on the socket with possibly using framing

The HL7 component is an example of doing this

more detail here

Then once you've got your camel component (lets call it foo) you could
then bridge to one or more queues in ActiveMQ using a variety of
Enterprise Integration Patterns

such as Content Based Router, Recipient List, Routing Slip etc

e.g. in Java code

// route all messages from the foo component to a single queue

// route all messages from the foo component to a queue using a
'cheese' header to route to the right queue


Open Source Integration

View raw message