Могу ли я использовать очередь сообщений, чтобы сидеть между моим приложением и внешней системой, чтобы отслеживать все, что выходит? - PullRequest
0 голосов
/ 05 июля 2019

У меня есть приложение с весенней загрузкой, которое выполняет некоторую обработку. Это приложение отправляет запросы, общается с различными приложениями. Запросы включают

  • HL7-сообщения на tcp / ip-сокет внешней системы.
  • http запросов к другим API (не для каждого вызова API, а для выбранного)
  • Данные JSON в файловую систему

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

Я посмотрел на Брокеры сообщений / Очереди сообщений - RabbitMQ, Kafka, ActiveMQ. Я не работал ни с одним из них. Эти структуры очередей, насколько я понимаю, предоставляют механизмы паб / саб, режимы прямого обмена.

Мои вопросы

  • Могу ли я отправить сообщение брокеру, а затем отправить его брокеру на внешнюю конечную точку?
  • Подключен ли потребитель к MQ или подписан на него для получения сообщений? Брокер не может просто отправить сообщение получателю.
  • Если получатель является успокоительным API, может ли он просто получить запрос без написания какого-либо специального кода потребителя MQ? Я не могу попросить внешнюю систему написать какой-нибудь потребительский код.

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

Альтернативный раствор, Добавьте запись в базу данных вместе с полезной нагрузкой для каждого запроса / сообщения, которое выходит из системы. Создайте пользовательский интерфейс, который можно использовать для отслеживания этих запросов, и предоставьте возможность повторной отправки в пользовательском интерфейсе, который можно использовать для повторной отправки этих сообщений на конечные точки. Просмотр около 200000 запросов / сообщений, отправляемых в день.

1 Ответ

1 голос
/ 05 июля 2019

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

Если вы ожидаете, что ваш сервис будет расширяться за счет увеличения требований, то выбирайте Kafka. Но какой бы брокер сообщений вы ни выбрали, создайте его следующим образом.

  1. Служба процессора (может быть существующим приложением с весенней загрузкой) - она ​​будет обработана, а результаты будут опубликованы посреднику сообщений.
  2. Kafka / RabitMQ / ZeroMQ - это просто очередь, в которой хранятся ваши сообщения
  3. Служба интеграции - она ​​подпишется на указанную выше очередь сообщений и отправляет любые полученные запросы. Неудачные сообщения могут быть помещены в очередь для Kafka для последующей обработки.

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

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