gpt4 book ai didi

java - 消息重新传递 ibm mq

转载 作者:行者123 更新时间:2023-12-01 16:55:40 25 4
gpt4 key购买 nike

我有一个从 IBM MQ 读取消息的系统。有时我们会从这个队列中得到损坏的数据。如果下次读取消息失败,监听器将等待 5 分钟,然后再继续。当一条消息失败 3 次时,它会被放入退避队列中。 JMSContainerFacotry 设置为最多并行运行 10 个。这意味着,如果我们收到一大批损坏的消息,这些消息每条需要 10 分钟以上才能到达退避队列(这没关系),但它们最终会消耗所有线程,因此其他消息必须等待所有损坏的消息到达回退队列。处理前的退避队列。我想从监听器中删除 wait() ,这样就不会阻塞线程,但失败的消息仍然会等待 5 分钟才能重新弹出。

我知道使用 ActiveMQ,您可以告诉队列等待 5 分钟,然后再次弹出相同的消息,但使用 IBM MQ,我没有这种可能性。是否可以将失败的消息放到队列后面?现在,失败的消息似乎会出现在新消息前面。或者将失败消息的 jmspriority 设置得较低。那么,如果有尚未失败的消息会在失败的消息之前从队列中弹出吗?

我的听众大约是这样:

@JMSListener()
public void listen(Object message) {
TextMessage textMessage = (TextMessage) message;

if (textMessage.getIntProperty("JMSXDeliveryCount") > 1) {
//pause for 5 minutes
}

//buisness logic

}

队列中是 IBM MQ。 AS是Jboss 6。

最佳答案

不知道为什么在收到恶意消息时要暂停 5 分钟。如果您知道它不好,为什么不将其扔掉或将其传递到回退队列以进行进一步调查?请参阅 JMS 有害消息处理:

http://www.ibm.com/support/knowledgecenter/SSFKSJ_9.0.0/com.ibm.mq.dev.doc/q032280_.htm

更令人担忧的是,为什么您会收到这么多“不良”消息?

关于java - 消息重新传递 ibm mq,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40359985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com