当前位置: 首页 > 知识库问答 >
问题:

ActiveMQ显示所有已确认的消息,尽管我只确认了一条消息

丁毅庵
2023-03-14

我创建了一个具有事务 falseCLIENT_ACKNOWLEDGE的生产者,该创建器将 99 条消息放在队列中。

我为具有不同会话的同一队列创建了一个消费者,并处理了falseCLIENT_ACKNOWLEDGE

我没有确认第一条消息,但确认了其余98条消息。

我打开ActiveMQ管理控制台,预计会看到1条消息挂起/1条在队列中,但令我惊讶的是,我看到所有99条消息都已出列。

有人能指出我哪里出错了吗?

共有1个答案

锺离晗昱
2023-03-14

您看到的是 JMS 规范所指示的预期行为。JMS 1.1 规范中标题为“消息确认”的第 4.4.11 节指出:

CLIENT_ACKNOWLEDGE -使用此选项,客户端通过调用消息的< code>acknowledge方法来确认消息。确认已使用的消息会自动确认收到由其会话传递的所有消息。[着重号后加]

如果您使用的是ActiveMQ 5. x,那么您可以使用ActiveMQSession.INDIVIDUAL_ACKNOWLEDGE模式,这是JMS规范之外的扩展。

 类似资料:
  • 问题内容: 我已经编写了一个函数,希望在提交表单之前显示确认消息。我应该如何添加我的条件。下面是我的代码。 问题答案: 解决方案是使用ajax属性。 beforeSend是发送之前的请求前回调函数.beforeSend函数中返回false将取消请求。 AJAX

  • 我的Sring引导应用程序监听Amazon SQS队列。现在,我需要实现正确的消息确认--我需要接收一条消息,做一些业务逻辑,只有在此之后,如果成功,我需要ack消息(从队列中删除消息)。例如,如果我的业务逻辑出现错误,消息必须重新排队。 现在我不知道如何从我的听众那里获取信息。

  • 我正在用Java实现Akka-Alpakka,用于从ActiveMQ队列消费和生成队列。我可以成功地从队列中消费,但还不能实现应用程序级消息确认。 我的目标是使用队列中的消息,并将它们发送给另一个参与者进行处理。当该角色完成处理后,我希望它能够控制ActiveMQ中的消息确认。这大概是通过向另一个可以进行确认的参与者发送消息、调用消息本身的确认函数或其他方式来完成的。 在我的测试中,两条消息被放入

  • 本文向大家介绍如何使用JavaScript显示确认消息?,包括了如何使用JavaScript显示确认消息?的使用技巧和注意事项,需要的朋友参考一下 确认对话框通常用于征得用户对任何选项的同意。它显示一个带有两个按钮的对话框:取消。 如果用户单击“确定”按钮,则窗口方法确认()将返回true。如果用户单击“取消”按钮,则返回false。 示例 您可以尝试运行以下代码以在JavaScript中实现确认

  • 如果在ActiveMQ中创建了一个队列,该队列具有一个生产者(即客户端确认模式)和一个侦听器,在成功处理消息后,其onMessage方法中仅对其进行确认。假设存在异常,并且消息未被确认,因此仍在队列中。是否会再次发送给消费者?或者这些信息会发生什么?

  • 我实现了一个Java使用者,它使用来自Kafka主题的消息,然后将这些消息与POST请求一起发送到REST API。 假设一个消息已经被使用,但是Java类未能到达REST API。消息将永远不会被传递,但它将被标记为已消耗。处理这类案件最好的办法是什么?当且仅当来自REST API的响应成功时,我能以某种方式确认消息吗?