Что такое хорошее решение для связи через брокер сообщений, который поддерживает приложения (C) Python и Java / JMS? Мои конкретные требования:
- решение с открытым исходным кодом
- Доступно в системах на базе Linux
- Рандеву между отправителем и получателем не требуется (т. Е. Используется брокер сообщений)
- Поддерживается несколько производителей и потребителей для одной очереди событий (каждое сообщение получает только один потребитель)
- Единица поддержки работы с двухфазной фиксацией (поддержка XA приятно иметь)
- Поддержка постоянных сообщений (т. Е. После перезапуска посредника)
- Поддерживает JMS для клиентов Java
- Ни один из компонентов не является "незначительным", что означает риск выпадения обслуживания из-за отсутствия поддержки / интереса сообщества
- Если есть клиент Python, которому удается «говорить на JMS», это было бы здорово, но ответ, включающий задачу по написанию моего собственного слоя Python JMS, является приемлемым
Мне было удивительно трудно найти решение для этого. Apache ActiveMQ не имеет поддержки Python из коробки. ZeroMQ требует встречи. RabbitMQ не поддерживает JMS. Лучший кандидат, который я нашел, - это комбинация ActiveMQ и библиотеки pyactivemq. Но первый и последний выпуск pyactivemq был в 2008 году, так что может показаться, что он не соответствует моему требованию "без каких-либо ограничений".
Идеальным ответом будут имена одного или нескольких хорошо поддерживаемых и хорошо документированных пакетов с открытым исходным кодом, которые вы лично использовали для связи между приложениями Java / JMS и Python и которые не требуют большой интеграции работать, чтобы начать. Ответ, который включает в себя «простую» (до нескольких дней работы) реализацию дополнительного связующего кода, отвечающего всем вышеуказанным требованиям, будет приемлемым. Коммерческое решение, при отсутствии хорошего кандидата с открытым исходным кодом, также будет приемлемым.
Также вышел Jython. (Если бы я только мог ...) Одни и те же приложения Python должны будут использовать модули, доступные только в CPython.