Проблема:Сообщение процесса Секвенциален с конкурирующими потребителями
- Получает сообщения (говорят заказы) на очереди в определенной последовательности (FIFO)
- Я конкурирующие потребитель на очереди
- Для дальнейшего добавления к сложности, потребитель может интересоваться только конкретными версиями заказа в зависимости от его состояния. (Скажем, версия1, версия 2 и версия5)
- Номер версии заказа доступен в заказе, но не может использоваться для последовательности, поскольку мой слушатель может не интересоваться все версии (потребитель может быть заинтересован только в версиях Say version1, version 2 и version5)
Как обеспечить, чтобы я обрабатывал сообщения через потребителей в том порядке, в котором я их получил?
Спасибо за ответ scott. Я действительно думал о распределенном хранилище, чтобы определить, какую версию мы обрабатываем, но он не будет работать для идентификации первого события. (представьте, что версия 1 обрабатывается Listener 1 и версией 2, обрабатываемой Listener 2. мы не можем гарантировать, что приказ гарантирует, что оба они могут не найти запись при поиске). В нашем случае это тоже не конечное множество. Нам нужна очередь для FIFO и гарантированной доставки и другой механизм переключения при сбое. хотел бы услышать ваши мысли по любой другой технологии, которая может считаться – user7161330
Помимо сериализации через одного потребителя, не знаю, есть ли решение, если вы не можете определить состояние (т. е. v2 может/не может быть первым событие для обработки, и нет возможности проверить), то не уверен, что существует жизнеспособное решение. Прежде чем пытаться закодировать, есть диаграмма состояния, которую вам нужно собрать ... –