Связь Java / Python через брокер сообщений

Какое хорошее решение для связи через брокер сообщений, поддерживающее как (C) Python, так и приложения Java / JMS? Мои конкретные требования:

  • решение с открытым исходным кодом
  • Доступно в системах на базе Linux
  • Не требуется встречи между отправителем и получателем (т.е. используется брокер сообщений)
  • Поддержка нескольких производителей и потребителей для одной очереди событий (только один потребитель получает каждое сообщение)
  • Поддержка единицы работы с двухэтапной фиксацией (неплохо иметь поддержку XA)
  • Поддержка постоянных сообщений (т.е. сохраняющихся после перезапуска брокера)
  • Поддерживает JMS для Клиенты Java
  • Ни один компонент не является «второстепенным», что означает риск выхода из строя из-за отсутствия поддержки / интереса сообщества
  • . Если есть клиент Python, которому удается «говорить на JMS», это было бы замечательно, но ответ, включающий в себя задачу по написанию моего собственного уровня Python JMS, приемлем

. Мне было на удивление трудно найти решение для этого. ActiveMQ Apache не имеет поддержки Python из коробки. ZeroMQ требует рандеву. RabbitMQ не поддерживает JMS. Лучший кандидат, который я нашел, - это комбинация ActiveMQ и библиотеки pyactivemq. Но первый и последний выпуск pyactivemq был выпущен в 2008 году, поэтому может показаться, что это не соответствует моему требованию "без отрыва".

Идеальным ответом будут имена одного или нескольких хорошо поддерживаемых и хорошо документированных пакетов с открытым исходным кодом. , которые вы лично использовали для обмена данными между приложением Java / JMS и Python, и которые не требуют большой интеграции для начала работы. Ответ, включающий «простую» (до нескольких дней работы) реализацию дополнительного связующего кода для удовлетворения всех вышеперечисленных требований, будет приемлемым. Коммерческое решение, в отсутствие хорошего кандидата с открытым исходным кодом, также будет приемлемым.

Кроме того, Jython отсутствует. (Если бы я только мог ...) Те же приложения Python должны будут использовать модули, доступные только в CPython.

13
задан wberry 1 July 2011 в 18:16
поделиться