遵循常规模式丢弃的MQ消息

时间:2017-04-06 13:42:09

标签: spring message-queue ibm-mq spring-jms

我使用HemrèsJMS来测试我的MQueue,每次发送消息时,我都正好有三分之二的MQ消息丢失

我有以下配置:

<bean id="mqConnectionFactory" class="com.integrator.init.MqConnectionFactory" init-method="init"
 scope="singleton">
    <property name="environnement" ref="env" />   
    <property name="destination" value=""/>     
</bean>

<bean id="cachedConnectionFactory" class="org.springframework.jms.connection.CachingConnectionFactory">
    <property name="targetConnectionFactory" ref="mqConnectionFactory" />
    <property name="sessionCacheSize" value="3" />
</bean>

<bean id="listenerPitagorCPY" class="com.integrator.pitagor.cpy.messaging.listenerPitagorCPY">
    <property name="pitagorCPYDelegate" ref="pitagorCPYDelegate"/>
</bean>

<bean id="pitagorCPYListener"
    class="org.springframework.jms.listener.DefaultMessageListenerContainer">
    <property name="autoStartup" value="false" />
    <property name="connectionFactory" ref="cachedConnectionFactory" />
    <property name="destination" ref="defaultDestination" />
    <property name="messageListener" ref="listenerPitagorCPY" />
    <property name="concurrentConsumers" value="4" />
</bean>

<bean id="defaultDestination" scope="singleton" class="com.ibm.mq.jms.MQQueue">
    <constructor-arg value="#{mqConnectionFactory.destination}" />
</bean>

每三个发送的消息恰好触发以下侦听器:

public class listenerPitagorCPY implements MessageListener {
    @Override
    public void onMessage(Message message) {
       // some work
  }
}

修改:

常规模式是:&#34; Nok,Nok,确定,Nok,Nok,确定,Nok,Nok,确定< /强> &#34; ......

当我添加<property name="concurrentConsumers" value="3" />时,模式变为&#34; Nok,Nok, OK,OK,OK ,Nok,Nok, OK,OK,好的,Nok,Nok,好的,好的,好的 &#34; ......

任何想法&#34;为什么&#34;这种接待模式存在吗?

由于

1 个答案:

答案 0 :(得分:0)

看起来很明显,有另一个客户端正在监听我的MQueue。