Последовательная обработка сообщений
Есть ли в Rebus способ управления обработкой сообщений таким образом, чтобы сообщения обрабатывались последовательно? то есть сначала один обработан, затем удален, затем второй обработан и т.д.
1 ответ
И да и нет:)
Прежде всего, я просто хочу сказать, что лучше всего делать все, что в ваших силах, чтобы спроектировать свою систему таким образом, чтобы она стала терпимой к переупорядоченным сообщениям. В будущем вы будете намного счастливее, если ваша система сможет оказаться в согласованном состоянии, даже если одно или несколько сообщений были припаркованы в очереди ошибок на некоторое время.
И когда я говорю "толерантно к переупорядоченному сообщению", я не обязательно имею в виду "все сообщения в совершенно случайном порядке"... больше похоже на "слегка переупорядоченное" и / или "некоторые из них должны быть в порядке, но могут терпеть многие из них переупорядочены ". В пределах разумного.
Мне кажется, что ваше требование довольно строгое - и единственный способ достичь этого - создать один поток (с параллелизмом 1), обрабатывающий сообщения, отбрасывающий (или перемещающийся в конец очереди, если сообщения важны).) сообщения, которые не должны были быть следующими.
Если перемещение сообщений в конец очереди слишком грубое (оно может стать медленным, если у вас много сообщений или они часто приходят не в порядке), вы можете использовать сагу, чтобы ставить сообщения в очередь до тех пор, пока у вас не появится нужное сообщение, и в этот момент вы можете делать то, что вам нужно.
Я надеюсь, что это имеет смысл:) Пожалуйста, дайте мне знать, если что-то не ясно.