生产者在收到消息之前从队列中回滚/删除消息

时间:2013-01-09 07:31:47

标签: jms hornetq

生产者正在向队列发送许多消息。现在队列中存储了这些消息。在消费者使用这些消息之前,如果生产者想要删除他错误发送的队列上的一些消息&他不希望接收者接受这个消息。我能实现这个目标。或任何其他建议,thnx

2 个答案:

答案 0 :(得分:2)

您应该将会话保持为事务处理,最后是提交或回滚。

如果您打算提交并且现在需要回滚,那么您的应用程序存在严重的设计问题,您应该查看。除此之外的任何事情都需要您的应用程序有一个数据库来处理接收和忽略它们,但是如果您可以使用数据库,则会以同步方式访问数据时出现性能问题。

答案 1 :(得分:0)

一种可能的方法:如果生产者知道要删除的消息的id,那么它只能接收该消息以从队列中删除该消息。但是,由于消费者可能在生产者意识到错误之前已经收到消息,因此无法保证删除该消息。