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

Jms 生产者在接收消息之前从队列回滚/删除消息,jms,hornetq,Jms,Hornetq,生产者正在向队列发送许多消息。现在队列中存储了这些消息。因此,在从消费者处消费这些消息之前,如果生产者希望删除队列中他错误发送的一些消息,他不希望接收者接收此消息。我如何实现这一点。或者任何其他建议,thnx一种可能的方法:如果生产者知道要删除的消息的id,那么它可以只接收该消息以从队列中删除该消息。但这并不能保证删除消息,因为消费者可能在生产者意识到错误之前已经收到了消息。您应该将会话保持为事务处理状态,并在最后提交或回滚 如果您打算提交,现在需要回滚,那么您的应用程序就有一个严重的设计问题,

生产者正在向队列发送许多消息。现在队列中存储了这些消息。因此,在从消费者处消费这些消息之前,如果生产者希望删除队列中他错误发送的一些消息,他不希望接收者接收此消息。我如何实现这一点。或者任何其他建议,thnx

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

您应该将会话保持为事务处理状态,并在最后提交或回滚


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

ya thnx对于建议shashi,我们可以通过编程实现这一点,但jms或hornetq中是否有任何内置功能可用于从队列中删除消息?当然不是jms。不过我不知道大黄蜂。一般来说,上面是从队列中删除消息的方法。是的,我实际上想删除消息,但使用hornetq内置功能,因为我使用JBOSS服务器…无论如何,thnx用于帮助shahshi…)不…我以异步方式访问数据…我如何使用hornetq内置功能从队列中删除消息功能性…我希望你明白了…thnx…我认为你对什么是消息系统有误解。一个消息系统,它不是一个可以根据数据添加和删除内容的数据库。这是火和忘记。事实上,您确实需要删除消息,这说明您存在架构问题。在异步系统上,您可以使用事务来确定是否可以提交消息。。。。在消息系统上混合DB概念会导致一场大灾难!小心!消息系统上的唯一概念是:发送使用/ACK,您可以在发送和确认时使用事务。在任何情况下,您都可以使用筛选器创建一个消费者,并确认与筛选器匹配的所有消息。根据生成时的消息设置相应的属性,以便您可以筛选它们。。。但是再一次。。那是造成灾难的秘诀。。这不是一个数据库。。消息系统是为fifo传递而优化的,而不是数据库!顺便说一句,看看Infinispan。你会在添加和删除内容方面取得更大的成功。在我看来,这才是你真正需要的。