如果在ActiveMQ中创建了一个队列,该队列具有一个生产者(即客户端确认模式)和一个侦听器,在成功处理消息后,其onMessage方法中仅对其进行确认。假设存在异常,并且消息未被确认,因此仍在队列中。是否会再次发送给消费者?或者这些信息会发生什么?
当消费者由于某些异常而未处理消息时,最好发送否定确认。例如,具有STOMP协议的NACK。然后,消息仍保留在队列中。ActiveMQ可以配置为在从消费者接收NACK时尝试重新交付。
https://stomp.github.io/stomp-specification-1.2.html#NACK
所有未确认的消息都保留在队列中。
它会再次发送给消费者吗?
是的,它将再次发送给消费者。
我不确定活动MQ是否具有队列属性,当设置该属性时,它将停止一次又一次地向消费者传递相同的消息,而将其移动到称为回退队列或死信队列的队列。IBM MQ在队列上有一个属性,BOTHRESH
-回退阈值-每次消息传递给消费者时,传递计数(或回退计数)都会增加。再次传递消息时,IBM MQ将检查消息的退出计数是否大于BOTHRESH。如果是这样,则将消息移动到回退队列(如果设置了回退队列),或移动到死信队列。
我正在用Java实现Akka-Alpakka,用于从ActiveMQ队列消费和生成队列。我可以成功地从队列中消费,但还不能实现应用程序级消息确认。 我的目标是使用队列中的消息,并将它们发送给另一个参与者进行处理。当该角色完成处理后,我希望它能够控制ActiveMQ中的消息确认。这大概是通过向另一个可以进行确认的参与者发送消息、调用消息本身的确认函数或其他方式来完成的。 在我的测试中,两条消息被放入
我有: hornetq-2.2.14-final独立服务器 C1使用jmstemboard在CLIENT_ACKNOWLEDGE模式下发送消息: 因此指挥与控制应手动确认消息: 我的问题: 当客户端C2收到该消息但在确认之前崩溃时,消息会发生什么? 是否有超时机制?如果是,确认的默认超时是什么?我如何修改它?
我有一个在Payara 4.1.2.173上运行的应用程序。应用程序应该发送和接收JMS消息,因此,我使用Apache ActiveMQ Artemis。我选择ActiveMQ Artemis是因为ActiveMQ只支持JMS1.1,而ActiveMQ Artemis支持JMS2.0。 但是我觉得奇怪的是,ActiveMQ Artemis没有提供资源适配器(.rar文件),而ActiveMQ却提供
问题内容: 我的Java应用程序将消息发送到RabbitMQ交换,然后交换将消息重定向到绑定队列。我将RabbitMQ与Springframework AMQP java插件一起使用。 问题:消息进入队列,但消息始终处于“未确认”状态,永远不会变为“就绪”状态。 可能是什么原因? 问题答案: 一条未确认的消息表示您的使用者已经读取了该消息,但是该使用者从未将ACK发送回RabbitMQ代理以表示它
我有一个JMS生产者和一个消费者,代理是ActiveMQ,参考下面的代码: 寄件人代码 接收码 问题是 ActiveMQ 队列无法接收来自发送方的消息(请参阅屏幕截图): 当我从 Web 控制台发送消息时,该消息在队列中收到,但来自创建者的消息不会进入队列。 另一个有趣的行为是(如队列接收器代码中所示,接收器在收到第一条消息后退出),同样,当我启动接收器时,它会收到相同的消息,并继续执行,直到我关
我创建了一个具有事务 和 的生产者,该创建器将 99 条消息放在队列中。 我为具有不同会话的同一队列创建了一个消费者,并处理了和。 我没有确认第一条消息,但确认了其余98条消息。 我打开ActiveMQ管理控制台,预计会看到1条消息挂起/1条在队列中,但令我惊讶的是,我看到所有99条消息都已出列。 有人能指出我哪里出错了吗?