Связь между PHP и Java с помощью ActiveMQ / Stomp - PullRequest
3 голосов
/ 18 июня 2010

Фон

У меня есть две службы, которые должны взаимодействовать друг с другом через очередь сообщений.Один из них - устаревший сервис, написанный на PHP, а другой - на Java.Рано или поздно сервис PHP будет переписан на Java.Текущий способ, которым они общаются друг с другом, - это запись в общую базу данных, которую опрашивает другая служба.Это то, от чего я пытаюсь уйти и заменить на очередь сообщений.

Проблема

Сообщение, над которым я сейчас работаю, пришло из PHPсервис к сервису Java.Он должен отправить относительно сложный объект (строки и целые числа и списки и карты строк и целых чисел).В идеале решение должно быть работоспособным на PHP и идеальным на Java, поскольку оно станет наследием этого проекта.

Возможные решения

Ответы [ 3 ]

3 голосов
/ 24 июня 2010

Решение, которое я придумала, заключается в постановке в очередь сообщений из PHP / Stomp с использованием преобразования jms-json-object.Сообщения специально созданы для JSON, так что, когда они удаляются из Java в readObject, они могут быть восстановлены до полного объекта, используя XStream .Эта реконструкция происходит внутри ActiveMQ , и я просто должен убедиться, что необходимые псевдонимы и преобразователи на месте.Когда мы окончательно заменим компонент PHP на Java, отправка сообщения будет зависеть от использования writeObject.

0 голосов
/ 18 июня 2010

На мой взгляд, вы должны избегать взаимодействия компонентов с конкретными реализациями.ActiveMQ содержит ошибки, и многие системы удалили его в пользу RabbitMQ или Sun OpenMQ.Вы должны избегать кодирования подпрограмм «отправить сообщение» в PHP, вместо этого создать сервлет «SendMessage» и использовать curl для публикации сообщения в формате JSON.Затем сервлет будет использовать фабрику соединений и т. Д. С небольшими издержками вы освободите компонент PHP от любого кода, специфичного для mq-сервера.Вы можете использовать TextMessage с JSON-загрузкой, легко кодируя и декодируя его с Джексоном.

0 голосов
/ 18 июня 2010

Есть клиент STOMP для PHP,

http://pecl.php.net/package/stomp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...