Заказ доставки JMS в EMS или BW

Есть ли способ контролировать порядок доставки сообщений в тему в EMS или Tibco (используя подписчика темы JMS)? Что-то вроде селектора сообщений, но вместо фильтрации делать упорядочивание.

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

Даже JMSPriority может быть вариантом, если я смогу установить его после получения сообщения от подписчика темы. Я могу это сделать? Может быть, с активностью кода Java?


person Adrian Ber    schedule 06.12.2016    source источник


Ответы (2)


Брокер будет доставлять сообщения в том порядке, в котором он их получает, но изменение порядка сообщений — это проблема распределенных вычислений/EIP (см. секвенсор). Проблема в том, что брокер не знает, сколько сообщений приходит или как долго держать окно открытым для повторного заказа сообщений. Это действие лучше всего выполнять вне брокера в вашем приложении, где эта информация понятна.

Платформы EIP и ESB проделали хорошую работу по стандартизации обработчика для этого типа рабочего процесса.

ссылка: EIP Sequencer http://www.enterpriseintegrationpatterns.com/patterns/messaging/MessageSequence.html

person Matt Pavlovich    schedule 12.12.2016
comment
Мой вопрос касается EMS, а не Camel. - person Adrian Ber; 13.12.2016
comment
Верно. Я просто использовал документацию и синтаксис Camel, чтобы проиллюстрировать логику/алгоритм. Эту функцию может выполнять любой EIP или интеграционная структура. Дело в том, что не полагайтесь на брокера. - person Matt Pavlovich; 13.12.2016
comment
Я отредактировал свой ответ, чтобы удалить ссылки на пример ресеквенсора Camel. - person Matt Pavlovich; 13.12.2016
comment
На самом деле JMSPriority уже используется для упорядочения сообщений. И если приходит сообщение с более высоким приоритетом, оно будет повторно доставлено первым, не заботясь о будущих сообщениях. Моя проблема в том, могу ли я установить это для повторной доставки сообщений. - person Adrian Ber; 04.01.2017

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

person Adrian Ber    schedule 22.02.2017