我使用 Apache NMS(在 c# 中)从 ActiveMQ 接收消息。我希望能够确认收到的每条消息,或者在出现错误时回滚消息。
我通过使用 CreateSession(AcknowledgementMode.IndividualAcknowledge) 解决了第一部分,然后对于每个收到的消息我使用 message.Acknowledge()。
问题是在这种模式下没有回滚选项。如果消息未得到确认 - 我将永远无法再次收到它以进行另一次试用。它只能发送给另一个消费者,但没有另一个消费者,所以它只是卡在队列中。
所以我尝试使用 AcknowledgementMode.Transactional 来代替,但是这里还有一个问题:我只能使用 session.Commit() 或 session.Rollback(),但是无法知道我提交了哪个特定消息或角色返回。
这样做的正确方法是什么?