我遇到的问题是:使用服务组合和骆驼路由,我通过 activeMQ 向消费者发送 JSON 消息。问题是该消费者处理此消息所花费的时间是 X,因此消费者在使用消息期间可能会停止或崩溃。在这种情况下,消息将是一半的消费者,并且已经从队列中删除,因为它已经被传递了。
是否可以使队列在消息被消费时不删除消息,而是等待消费者确认该消息的处理已完成,然后再删除它?
在从文件系统导入文件的典型情况下,您将删除文件或将其重命名为仅在文件已完全处理且事务已完全提交的末尾完成。那么在 ESB 世界中,我们可以说保留消息直到我完成,然后我告诉你删除它。
我目前正在使用 spring jms:listener-container 和 jms:listeners 来使用这些消息。