私は次のことを行うPOCに取り組んでいます
- メッセージ駆動型チャネルアダプタを使用して、トランザクションでメッセージを受信します
- ハンドラーを使用してアダプターから受信したメッセージをDBに挿入し、メッセージをアウトバウンド・チャネルに送信するServiceActivatorを呼び出します。
ここで、メッセージのDB挿入が失敗した場合、後で再試行できるように、JMSメッセージをキューに戻したいと思います。
以下の構成では機能しないようです(つまり、データベースへの挿入中にエラーが発生した場合でも、メッセージはキューから削除されます。
任意のポインタまたはサンプル構成が役立ちます。
<integration:channel id="jmsInChannel">
<integration:queue/>
</integration:channel>
<int-jms:message-driven-channel-adapter id="jmsIn"
transaction-manager="transactionManager"
connection-factory="sConnectionFactory"
destination-name="emsQueue"
acknowledge="client" channel="jmsInChannel"
extract-payload="false"/>
<integration:service-activator input-channel="jmsInChannel"
output-channel="fileNamesChannel" ref="handler" method="process" />
<bean id="handler" class="com.irebalpoc.integration.MessageProcessor">
<property name="jobHashTable" ref="jobsMapping" />
</bean>