Заказ о потреблении бобов и сообщений и сообщений

StackOverflow https://stackoverflow.com/questions/5314214

Вопрос

У меня есть MDB, который подписан на тему, которая отправляет сообщения, контент которого в конечном итоге сохраняется в БД.

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

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

Это было полезно?

Решение

Скопировано из там:

Чтобы убедиться, что заказ в получении соответствует заказу, в котором клиент отправил сообщение, вы должны сделать следующее:

  • Установите Max-Beans-In-Pool на 1 для MDB. Это гарантирует, что MDB является единственным потребителем сообщения.

  • Если ваши MDB развернуты на кластере, разверните их в один узел в кластере, [...].

  • Чтобы обеспечить заказ сообщений в случае отката и восстановления транзакций, настройте настройку настраиваемого подключения с установленной на 1 MessageMaximum и убедитесь, что задержка переоборудования не настроена. Для получения дополнительной информации см. [...].

Другие советы

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

Конечно, если вы все еще хотите там параллелизм, у вас есть пара вариантов, но это действительно зависит от данных.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top