2
我在POC其執行以下操作事務而使用消息驅動的通道適配器和服務激活
- 工作處理使用消息驅動通道適配器在交易
- 到收到消息調用服務活化劑,其使用處理程序將從適配器接收的消息插入數據庫,並將消息發佈到出站通道。
現在,如果消息的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>
我不相信你需要(甚至可以)*刪除* JmsInChannel - 但你確實需要從中刪除*隊列*。你需要一個DirectChannel(默認),它在同一個線程上作爲方法調用實現,因此它的輸出處理程序將在任何打開的事務中執行。 @加里羅素 - 感謝您的鏈接,這對我非常有幫助。 –
@Gary Russell - 有沒有辦法在消息驅動通道適配器中設置重試時間?我試過'recovery-interval =「20000」'但是不起作用 – shashikanthb
我剛剛編輯了我的評論;我已經指定 但沒有轉義字符,所以html吃了單詞隊列。 –