Сообщения MQ отбрасываются по обычному шаблону
Я использую HemrèsJMS для тестирования своего MQueue, и каждый раз, когда я отправляю сообщение, у меня теряются ровно 2 из трех сообщений 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
}
}
Редактировать:
Обычный шаблон: " Нок, Нок, ОК, Нок, Нок, ОК, Нок, Нок, ОК "...
Когда я добавлю <property name="concurrentConsumers" value="3" />
, шаблон становится " Нок, Нок, ОК, ОК, ОК, ОК, Нок, Нок, ОК, ОК, ОК, ОК, Нок, Нок, ОК, ОК, ОК "...
Есть идеи о том, "почему" такая схема приема существует?
Спасибо
1 ответ
Решение
Как бы это ни казалось очевидным, другой клиент слушал мой MQueue.