В моем previous message Я искал решение для обработки входящих сообщений параллельно. После многих проб и ошибок, я думаю, у меня может быть рабочее решение.Потеря сообщений в процессорах при перезапуске брокера
Однако одно из требований платформы, над которой я работаю, заключается в том, что сообщения, которые обрабатываются, должны быть перезапущены или перезаписаны в случае внезапного перезапуска брокера.
Во время тестирования я успешно начал несколько процессоров сразу, чтобы выполнить единицу работы на сообщение. То, что я обнаружил при внезапном перезапуске брокера, заключается в том, что любое сообщение, «обработанное» внутри процессора, фактически потеряно. Однако, когда процессор выбрасывает преднамеренное исключение, сообщение пересылается в очередь.
Как я могу защитить свое сообщение во время его обработки (а часть работы еще не закончена)? Любые рекомендации очень ценятся.
Примечание: окончательная реализация будет использовать мастер-мастер-установку двух одинаковых брокеров за балансировщиком tcp.
Вы используете транзакции и являетесь ли сообщения постоянными? –
сообщения отправляются в очередь с DeliveryMode.PERSISTENT. Не уверен, как добавить транзакции к моим процессорам. В настоящее время все сообщения «в полете» исчезли, если я убью java-процесс для activemq. – djBo
Я просто добавил транзакции для каждого маршрута, но затем сообщения перестают обрабатываться параллельно ... – djBo