2016-09-09 10 views
0

У меня есть несколько приложений в системе, которые написаны на разных языках. Есть ли хорошая практика для отправки сообщений между этими приложениями?связь между различными приложениями

Поскольку приложения написаны на разных языках, JMS не является вариантом. В настоящее время у меня есть некоторые идеи, такие как MQ, веб-службы, служба ESB.

Является ли ESB лучшей практикой?

Пожалуйста, дайте мне несколько предложений, спасибо!

EDIT Некоторые приложения очень много времени, поэтому RPC вызов (по меньшей мере, блокирование RPC не очень хорошо), возможно, это также необходимо принимать во внимание.

+0

Вы должны рассмотреть [RabbitMQ] (https://www.rabbitmq.com/). – pdoherty926

+0

На самом деле я сейчас использую Rabbit MQ в качестве временного решения, но не уверен, что это лучшее решение, когда возникают более параллельные запросы. – Simon

ответ

0

Я бы серьезно посмотрел на ZeroMQ и буферы протокола Google. Оба они хорошо поддерживаются широким спектром языков на многих платформах.

ZeroMQ - отличный способ перемещения байтов между приложениями или потоками, запущенными либо на одном компьютере, либо через сеть.

Буферы протокола Google - отличный способ заставить эти байты означать что-то для каждого приложения или потока без необходимости писать тонну кода самостоятельно. Это тоже двоично, поэтому передаваемые данные являются довольно маленькими.

Таким образом, было бы довольно тривиально иметь, скажем, одну программу, написанную на C++, работающую на Linux на процессоре ARM, говорящую с другим, работающим в Java на Windows.

Если наилучшей практикой является необходимость не устанавливать дополнительную услугу или сервер, то эти два - это то, что вам нужно.

+0

Если я правильно вас понимаю, ваш подход заключается в использовании буфера протокола Google для сериализации данных, а затем для отправки сообщений используйте ZeroMQ, правильно? Если да, то в чем преимущество использования GPB над JSON и ZeroMQ над другими MQ? – Simon