Java/Python communication via message broker

wberry picture wberry · Jul 1, 2011 · Viewed 11k times · Source

What is a good solution for communication via message broker that supports both (C)Python and Java/JMS applications? My particular requirements are:

  • open source solution
  • Available on Linux-based systems
  • No rendezvous between sender and receiver required (i.e. uses a message broker)
  • Multiple producers and consumers supported for a single event queue (only one consumer receives each message)
  • Unit of work support with two-phase commit (XA support nice to have)
  • Support for persistent messages (i.e. that survive a restart of the broker)
  • Supports JMS for Java clients
  • No component is "fringe", meaning at risk of falling out of maintenance due to lack of community support/interest
  • If there is a Python client that manages to "speak JMS" that would be awesome, but an answer including a task to write my own Python JMS layer is acceptable

I have had a surprisingly hard time finding a solution for this. Apache's ActiveMQ has no Python support out of the box. ZeroMQ requires a rendezvous. RabbitMQ does not appear to support JMS. The best candidate I have found is a combination of ActiveMQ and the pyactivemq library. But the first and last release of pyactivemq was in 2008, so it would appear that that fails my "no fringe" requirement.

The ideal answer will be the names of one or more well-supported and well-documented open source packages, that you have personally used to communicate between a Java/JMS and Python application, and that do not require a lot of integration work to get started. An answer that includes an "easy" (up to a few days of work) implementation of additional glue code to meet all the requirements above, would be acceptable. A commercial solution, in the absence of a good open source candidate, would be acceptable also.

Also, Jython is out. (If only I could...) The same Python applications will need to use modules only available in CPython.

Answer

Shahzeb picture Shahzeb · Jul 14, 2011

JMS is a specification not implementation . RabbitMQ is a really option .

I have also happily used HornetQ http://www.jboss.org/hornetq from Jboss as with every thing it is more aligned with every thing Java EE but RabbitMQ would be choice espcially if you are using Spring as well