2015-02-05 84 views
1

我正在使用出站通道适配器将消息发布到队列的应用程序。有一个新的要求,即在消息处理过程中生成的唯一标识在队列上成功发布后应持久保存到数据库,而不必等待任何回复。Spring集成出站通道适配器和数据库持久性

有人请告知什么应该是最好的方法。

这是我在我现有的应用程序中。

<int:gateway id="writerGateway" service-interface="CustomService" default-request-channel="writerChannel"> 
</int:gateway> 

<int-jms:outbound-channel-adapter channel="writerChannel" jms-template="jmsTemplate" destination-name="${queueName}" extract-payload="true"/> 

<int:channel id="writerChannel"> 
    <int:interceptors> 
     <int:wire-tap channel="writerLogger"/> 
    </int:interceptors> 
</int:channel> 

<int:logging-channel-adapter id="writerLogger" logger-name="writerLogger" level="INFO" expression="'Sending ' + payload?.size() + ' events'"/> 

任何帮助将不胜感激。

谢谢, AK

回答

1

writerChannel一个<publish-subscribe-channel/>和订阅第二流(order="2")给它,例如transformer -> jdbc-outbound-channel-adapter。在jms适配器上设置order="1",如果jms发送成功,则会调用第二个流。可以使用<recipient-list-router/>

+0

建议我将writerChannel更改为publish-subscribe-channel,然后使用后跟。这似乎工作。 – user2459396 2015-02-06 11:52:06

+0

我在这里面临一个问题,因为原始有效载荷被转换为XML。我可以使用声明检入来存储原始副本,但是我失去了如何连接jms-outbound-channel-adapter和jdbc-outbound-channel-adapter,因为他们有不同的输入消息渠道。 – user2459396 2015-02-11 14:31:10

+0

请不要捎带回答已回答的问题;最好开始一个新的。你可以使用header-richher('

'把一个有效载荷的副本保存在一个头文件中。之后你可以直接访问头文件或者使用变换器来恢复payloasd。 – 2015-02-11 15:46:49

相关问题