Распределенный ActiveMQ с Camel

Я нахожусь в процессе изучения ActiveMQ и Camel с целью создать немного опытной системы, которая работает что-то вроде этого:

alt text
(источник: paulstovell.com)

(большой)

Когда заказ размещен в системе Заказов, сообщение отослано любым подписчикам (pub/sub система), и они могут играть свою роль в обработке заказа. Заказы, Поставлясь и Выставляя счет приложениям имеют свои собственные установки ActiveMQ, так, чтобы, если какая-либо из этих трех систем в режиме офлайн, другие могли продолжить функционировать. Что-то заботится о перемещении сообщений между установками ActiveMQ.

Получение Camel Apache переместить сообщения от одной очереди другому через маршруты довольно легко, если они находятся на том же экземпляре ActiveMQ. Таким образом, это работает на управление очередями подписки.

Следующая проблема продвигает сообщения от одного экземпляра ActiveMQ до другого, и это - бит, где я не уверен, что посмотреть на затем.

  1. Camel может направить между различными установками ActiveMQ? (Я не могу выяснить то, чем конечной точкой JMI был бы URI то, если они находятся на различных машинах).
  2. Я понимаю, что ActiveMQ имеет возможности промежуточной буферизации. Это то, что я использовал бы для перемещения сообщений между Заказами и Поставкой/Выставлением счета?
  3. Или это то, что Apache ServiceMix предназначен для решения?

17
задан Glorfindel 17 June 2019 в 10:05
поделиться

2 ответа

Это довольно простое асинхронное, управляемое событиями приложение, которое хорошо подходит для ActiveMQ и Camel.

На самом деле вы не перемещаете сообщения явно из одного экземпляра ActiveMQ в другой. Принцип его работы основан на использовании так называемой сети брокеров . В вашем случае у вас будет три брокера: ActiveMQ-purple, ActiveMQ-green и ActiveMQ-blue. ActiveMQ-purple создает однонаправленную брокерскую сеть с ActiveMQ-green и ActiveMQ-blue. Это позволяет ActiveMQ-purple сохранять и пересылать сообщения в ActiveMQ-green и ActiveMQ-blue в зависимости от потребительского спроса.

Приложение «Заказы» принимает заказы в очереди заказов на ActiveMQ-purple. Приложение Orders использует Camel для получения и обработки сообщения, чтобы определить, является ли это сообщением о выставлении счета или сообщением о доставке. Camel направляет сообщения либо в очередь выставления счетов, либо в очередь доставки на ActiveMQ-purple.

Потребительский спрос исходит из приложения Invoicing и приложения Shipping. Invoicing использует Camel для получения сообщений из очереди выставления счетов на ActiveMQ-green. Приложение Shipping использует Camel для получения сообщений из очереди доставки на ActiveMQ-blue. Из-за сети брокера и из-за потребительского спроса на очередь ActiveMQ-green.invoicing и очередь ActiveMQ-blue.shipping сообщения будут пересылаться из ActiveMQ-purple соответствующему брокеру и очереди. Нет необходимости явно направлять сообщения конкретному брокеру.

Надеюсь, это ответит на ваши вопросы. Дайте мне знать, если у вас есть еще.

Брюс

20
ответ дан 30 November 2019 в 13:40
поделиться

Необходимо перезаписать содержимое argv [0] на языке C в Linux. Теперь, как это сделать с Эрланга... Ну, возможно, вам нужно начать процесс erlang из C обертки.. Только мои 2 цента

-121--4067219-

Также не устанавливайте заголовок длины содержимого. Java сделает это для вас.

-121--3665223-

Мм, я только в лучшем случае, и не на какое-то время, но я постараюсь что-то предложить.

ActiveMQ может выполнять маршрутизацию между различными установками и просто использует стандартные URI, насколько мне известно, поэтому я не уверен, в чем проблема. Я думаю, что с помощью TCP вы будете в порядке. Используя ServiceMix (вы упоминаете его позже), вы просто указываете conniceFactory, а затем предоставляете URI в этом. По этой ссылке показаны примеры http://servicemix.apache.org/servicemix-jms-new-endpoints.html .

Camel поддерживает долговечного абонента, если это то, за чем вы были ( http://camel.apache.org/durable-subscriber.html )? Этот образец гарантирует, что если абонент находится в автономном режиме, когда сообщение готово, оно будет удерживаться до тех пор, пока абонент не вернется в оперативный режим. Это также поддерживается ServiceMix (см. ссылку, приведенную выше, и ищите «subscripureExtendable».

1
ответ дан 30 November 2019 в 13:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: