Как настроить устойчивый подписчик с помощью Spring в кластере

У меня есть приложение, публикующее сообщения. Допустим, событие PaymentHasBeenMadeEvent

{ orderId:'1234'
  totalPaid:'$100'
  balanceStatus: 'BALANCED'
}

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

Итак, я хочу опубликовать это событие, используя устойчивую тему JMS. Я должен настроить каждое приложение с уникальным идентификатором клиента, как я изучал.

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

Или решение является недостатком, поскольку я что-то неправильно понял?


person Yugang Zhou    schedule 19.02.2014    source источник


Ответы (2)


Вы можете использовать общий подписчик, который был добавлен в JMS 2.0. Если вы используете Spring 4.1, вы можете установить subscriptionShared как true, чтобы только один экземпляр в кластере получил сообщение.

Заслуживает внимания Новые функции обмена сообщениями в JMS 2.0 тоже.

person Manu    schedule 16.03.2016

использовать групповой синтаксис. Перед темой каждого слушателя укажите одну и ту же группу. то есть [[payment_group_name]]payment.has.been.made

person user1564836    schedule 03.02.2015