2015-03-05 6 views
3

Я работаю с несколькими различными службами, написанными на Python и Java. Теперь я пришел к тому, что мне нужно, чтобы эти службы обменивались данными друг с другом, и ActiveMQ кажется разумным выбором.Поддержка перекрестного языка в ActiveMQ

Однако я не уверен, что вполне согласен с концепцией различных протоколов, доступных для ActiveMQ. Главный вопрос: нужно ли мне выполнять все мои службы для использования того же протокола для доступа к шине?

  1. Возможно ли одновременное выполнение одной и той же шины с несколькими различными протоколами соединения?

  2. Если да, то 1. Это просто подключение к шине, которое регулируется протоколом или выбор протокола также влияет на тип фактического содержимого сообщения. То есть можно ли отправить сообщение из Java JMS в тему и попросить клиента Python STOMP правильно прочитать это сообщение?

ответ

2

Inter язык interopability могут быть разными клиентами, используя тот же протокол, например, JMS для Java, CMS для C++ и NMS для .NET (когда речь идет о OpenWire). Я не думаю, что там есть отличный клиент OpenWire Python, за исключением некоторых CMS wrappers.

С другой стороны, ActiveMQ отлично справляется с тем, чтобы соединяться между различными протоколами, чтобы они могли совместно использовать одни и те же очереди/темы. Он отлично работает, чтобы читать сообщения Stomp, MQTT и AMQP, отправленные из OpenWire/JMS. Имейте в виду, что вам может понадобиться избегать расширенных функций, например JMS, таких как MapMessage, полагаться на определенные заголовки JMS и придерживаться простых текстовых сообщений или байтовых сообщений. Мост не прозрачен на 100%, но, как я уже сказал, отлично справляется.

Итак, вы можете пойти с топать или даже AMQP 1.0, некоторые инструкции от Microsoft here.