Jms ActiveMQ未确认消息会发生什么情况

Jms ActiveMQ未确认消息会发生什么情况,jms,activemq,consumer,Jms,Activemq,Consumer,如果在ActiveMQ中创建了一个队列,该队列有一个生产者(即客户端确认模式)和一个侦听器,在成功处理消息后,其onMessage方法中只有消息被确认。说明是否存在异常,并且消息仍未确认,因此仍在队列中。是否会再次发送给消费者?或者这些消息会发生什么情况?所有未确认的消息都保留在队列中 是否会再次发送给消费者 是的,它将再次发送给消费者 我不确定活动MQ是否具有队列属性,当设置该属性时,它将一次又一次地停止向使用者传递相同的消息,而将其移动到称为回退队列或死信队列的队列。IBM MQ在队列上有一

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

所有未确认的消息都保留在队列中

是否会再次发送给消费者

是的,它将再次发送给消费者


我不确定活动MQ是否具有队列属性,当设置该属性时,它将一次又一次地停止向使用者传递相同的消息,而将其移动到称为回退队列或死信队列的队列。IBM MQ在队列上有一个属性,
BOTHRESH
-回退阈值-每次将消息传递给消费者时,传递计数(或回退计数)都会增加。再次传递消息时,
IBM MQ
将检查消息的退出计数是否超过
BOTHRESH
计数。如果设置了回退队列,则将消息移动到回退队列,或者移动到死信队列。

所有未确认的消息都保留在队列中

是否会再次发送给消费者

是的,它将再次发送给消费者


我不确定活动MQ是否具有队列属性,当设置该属性时,它将一次又一次地停止向使用者传递相同的消息,而将其移动到称为回退队列或死信队列的队列。IBM MQ在队列上有一个属性,
BOTHRESH
-回退阈值-每次将消息传递给消费者时,传递计数(或回退计数)都会增加。再次传递消息时,
IBM MQ
将检查消息的退出计数是否超过
BOTHRESH
计数。如果是这样,如果设置了回退队列,则将消息移动到回退队列,或者移动到死信队列。

当消费者由于某些异常而未处理消息时,最好发送否定确认。例如,NACK与STOMP协议。然后消息将保留在队列中。ActiveMQ可以配置为在从使用者接收NACK时进行重新交付尝试


当消费者由于某些异常而未处理消息时,最好发送否定确认。例如,NACK与STOMP协议。然后消息将保留在队列中。ActiveMQ可以配置为在从使用者接收NACK时进行重新交付尝试


以及如何访问这些消息?在IBM MQ中?我将检查activemq,因为我知道它会再次交付。我很好奇访问IBM MQBackout队列中发送到备份队列的消息只是另一个队列,访问该队列中的消息也与访问其他队列中的消息相同。如何访问此类消息?在IBM MQ中?我将检查activemq,因为我知道它会再次交付。我很好奇访问IBM MQBackout队列中发送到备份队列的消息只是另一个队列,从该队列访问消息也与访问其他队列相同。我使用了session.recover()。即使这样,邮件仍处于挂起状态,并且在其他邮件之前先发送。这个答案也是正确的。但是,在我的例子中,我没有使用stomp。一般来说,当消息由于未确认而留在队列中时,它将与任何其他消息一样再次发送给消费者。在ActiveMQ中,默认情况下,在将其发送到dlq之前,将有大约6次尝试重新传递给使用者。我使用了session.recover()。即使这样,邮件仍处于挂起状态,并且在其他邮件之前先发送。这个答案也是正确的。但是,在我的例子中,我没有使用stomp。一般来说,当消息由于未确认而留在队列中时,它将与任何其他消息一样再次发送给消费者。在ActiveMQ中,默认情况下,在将其发送到dlq之前,将有大约6次向使用者的重新传递尝试。您使用的是什么类型的客户端?您使用的是什么类型的客户端?