2016-12-01 19 views
0

Моя среда: spring 4.1, JBoss EAP 6.4, IBM MQ 8.0:Spring JMS Message Redelivery не работает, как ожидалось в режиме CLIENT_ACKNOWLEDGE

сообщения не повторно доставлены в случае, когда Listener проливает RuntimeException.

У меня есть следующие в JmsConfig:

@Bean 
DefaultMessageListenerContainer defaultMessageListenerContainer(QueueConnectionFactory connectionFactory, JndiDestinationResolver dr, MessageListener ml) { 
    DefaultMessageListenerContainer mlc = new DefaultMessageListenerContainer(); 
    mlc.setConnectionFactory(connectionFactory); 
    mlc.setMessageListener(ml); 
    mlc.setDestinationName(jndiInQueue); 
    mlc.setDestinationResolver(dr); 
    mlc.setSessionTransacted(true); 
    mlc.setSessionAcknowledgeMode(Session.CLIENT_ACKNOWLEDGE); 
    return mlc; 
} 

Если я использую JmsTransactionManager и передать его с описанным выше способом и использовать так:

mlc.setTransactionManager(tm)

После предупреждения записываются в log:

It is not valid to commit a non-transacted session, и поведение такое же, никакой redeliver у.

ConnectionFactory получено через JNDI, интересно, может ли поиск ConnectionFactory через jndi?

От AbstractMessageListenerContainer Javadocs:

Для того, чтобы последовательно организовать для возврата судна с любым контейнерным вариантом, рассмотрят режим "CLIENT_ACKNOWLEDGE" или - предпочтительно - установку "sessionTransacted" к "истинной" вместо

Существует similar question на SO.

ответ

0

Переверните свой режим ack на Session.SESSION_TRANSACTED вместо CLIENT_ACKNOWLEDGE.

Режим клиента Ack не работает, поскольку большинство людей этого хотят .. и является обычным «gotcha» в JMS. Он подтверждает текущее сообщение И все предыдущие сообщения в сеансе. Это не подтверждение приема сообщений.

Edit:

также проверить связанные post-- IBM MQ может потребоваться использовать «XA» версии класса подключения фабрики.

исх: Websphere Liberty profile - transacted Websphere MQ connection factory

+0

Я попробовать Session.SESSION_TRANSACTED, не работает. – kmansoor

 Смежные вопросы

  • Нет связанных вопросов^_^