Websphere MQ 7 with Spring JMS - 无限传递

时间:2017-01-17 10:21:51

标签: ibm-mq spring-jms

我使用Spring启动(JMS)编写了一个Websphere MQ侦听器。我已将队列级别的退出队列配置为阈值为0

作为程序的一部分,我立即抛出JMSException,我收到消息,以便我的消息返回队列。

我面临的问题是消息不断被重新传递给听众

JMSMessage class: jms_text
JMSType:          null
JMSDeliveryMode:  2
JMSExpiration:    0
JMSPriority:      0
JMSMessageID:     ID:414d51204d5148554244313020202020583e8e2b26af9905
JMSTimestamp:     1484639118180
JMSCorrelationID: null
JMSDestination:   null
JMSReplyTo:       null
JMSRedelivered:   true
JMSXAppID: WebSphere MQ Client for Java
JMSXDeliveryCount: 98
JMSXUserID: a450922     
JMS_IBM_Character_Set: UTF-8
JMS_IBM_Encoding: 546
JMS_IBM_Format: MQSTR   
JMS_IBM_MsgType: 8
JMS_IBM_PutApplType: 28
JMS_IBM_PutDate: 20170117
JMS_IBM_PutTime: 07451818



    @JmsListener(destination = "${ibm.mq.incomingqueue}", containerFactory = "defaultJmsListenerContainerFactory")
public void onMessage(TextMessage message) throws JMSException {

    System.out.println("Here" + message.toString());

    throw new JMSException("reason");

}

1 个答案:

答案 0 :(得分:2)

BOTHRESH必须大于或等于1。将BOTHRESH设置为0将禁用它。

引用IBM的How WebSphere Application Server handles poison messages Paul Titheridge。

  

当WebSphere MQ是JMS提供者时   缺省情况下,使用WebSphere MQ创建的队列将Backout阈值属性(在WebSphere MQ术语中称为BOTHRESH)设置为0.因此,WebSphere MQ的缺省行为永远不会退出有害消息。