JMS между приложениями Enterprise - PullRequest
1 голос
/ 29 октября 2010

У нас есть проект, в котором мы хотим связать 2 корпоративные системы, используя JMS.В двух словах, система 1 отправляет сообщение в очередь.Systems2 принимает это сообщение, выполняет целую загрузку в фоновом режиме в течение примерно 30 минут, а затем отправляет сообщение обратно в очередь для System1 для получения.

Можем ли мы получить одну очередь или нам нужно2?Если у нас есть 2 очереди, то System1 записывает в очередь 1, System2 принимает.Когда system2 готова, она пишет в очередь2, а System1 забирает ее.

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

Спасибо, Дэмиен

Ответы [ 2 ]

1 голос
/ 29 октября 2010

Если это выделенный одноранговый интерфейс, и ни одно из этих приложений не работает как сервер, то вы можете обойтись без единой очереди. Однако эта модель не поддерживает шаблон клиент-сервер. С другой стороны, шаблон клиент-сервер поддерживает одноранговый интерфейс, а также интерфейс клиент-сервер, и его не сложнее реализовать, так почему бы не использовать его?

В частности, сервер прослушивает известную очередь. Любое приложение, желающее управлять этой службой, отправляет сообщение в известную очередь. Сообщение содержит адрес получателя Reply-To, и сервер отправляет ответ этому получателю. Таким образом, серверное приложение может обрабатывать запросы от многих относительно анонимных (или, при желании, аутентифицированных) клиентов в любой точке сети.

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

1 голос
/ 29 октября 2010

Вы можете использовать селекторы в очереди, но я бы посоветовал сделать это проще и использовать 2 очереди, как вы описали.Я предпочитаю разделять типы сообщений на отдельные очереди, и я думаю, что вы найдете, что ими тоже проще всего управлять.

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

...