Так что есть шаблонный код, который потребляет сообщения от темы:Поддержка транзакций для Спрингс OnMessage обработчика
public void onMessage(Message message)
{
try
{
// try my conversion
}
catch(MyConversionException e)
{
//catch conversion error but still consume off topic
}
//Any other error i.e. runtime errors will not cause the message to be consumed from topic. So it can be retried
}
Я желаю, чтобы иметь возможность попытаться преобразовать сообщение в другой объект. Если это приведет к ошибке, я поймаю ее с помощью моей собственной обработки исключений и напишу ее в очередь ошибок.
Мой вопрос: как настроить Springs messageListenerContainer bean для транзакции и использовать только, если это произошло успешно ???
[EDIT] Вот боб до сих пор:
<!-- MESSAGE LISTENER CONTAINER -->
<bean id="ListenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="messageListener" ref="MessageListener" />
<property name="connectionFactory" ref="Tcf" />
<property name="destinationResolver" ref="JmsDestinationResolver" />
<property name="receiveTimeout" value="${jms-timeout}" />
<property name="destinationName" value="${jms-topic}" />
<property name="concurrency" value="1" />
<property name="pubSubDomain" value="true" />
<property name="subscriptionDurable" value="${jms-durable-flag}"/>
<property name="durableSubscriptionName" value="${jms-durable-name}" />
<property name="clientId" value="${jms-client-id}"/>
</bean>
Я хочу поймать свое собственное исключение, но не уничтожить ничего, что вызывает какое-либо другое исключение. – Mick
Попробуйте TransactionStatus.setRollbackOnly() –