ActiveMQ重新交付不起作用

ActiveMQ重新交付不起作用,第1张

ActiveMQ重新交付不起作用

因为您使用

this.session =connection.createSession(false,Session.CLIENT_ACKNOWLEDGE);

呼叫
message.acknowledge();
与呼叫相同
session.acknowledge();

为了使ActiveMQ重新交付成功与您的配置一起使用,有一些可能需要最小的更改:

  1. 打电话
    QueueReceiver.this.session.recover();

    代替打电话
    QueueReceiver.this.session.rollback();

void org.apache.activemq.ActiveMQSession.recover()引发JMSException

在此会话中停止消息传递,并使用最早的未确认消息重新启动消息传递。

所有使用者均按串行顺序传递消息。确认收到的消息会自动确认已传递给客户端的所有消息。

重新启动会话会导致它采取以下 *** 作:•停止消息传递•将所有可能已传递但未被确认为“已重新传递”的消息标记为•重新启动传递顺序,包括之前已传递的所有未确认的消息。重新传递的消息不必完全按照其原始传递顺序传递。

  1. 使用

    this.session = connection.createSession(false, org.apache.activemq.ActiveMQSession.INDIVIDUAL_ACKNOWLEDGE);
    和呼叫
    ((org.apache.activemq.command.ActiveMQMessage) message ).acknowledge();
    ,请注意,不是调用这个方法就像是一个回退,意味着消息不承认,并扔在一个异常
    onMessage
    方法调用
    QueueReceiver.this.consumer.rollback();
    org.apache.activemq.ActiveMQMessageConsumer.rollback()

  2. 只需调用

    QueueReceiver.this.consumer.rollback();
    org.apache.activemq.ActiveMQMessageConsumer.rollback() 代替调用
    QueueReceiver.this.session.rollback();



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5641485.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存