![](/img/trans.png)
[英]Spring Integration + @Aysnc - Gateway vs ServiceActivator
[英]Sending message to serviceActivator in Spring Integration after sending response in TCP gateway
我基於TCP網關構建的Spring Integration應用程序運行良好。 它接收到達TCP網關的請求消息,並將消息轉發到serviceActivator以准備響應,然后將響應發送到客戶端。
我想在發送到客戶端后將消息保存到數據庫。 我只是想知道在將響應發送到客戶端之后是否可以將消息轉發到另一個serviceActivator。
如果是,應該如何設置彈簧配置? 在這方面的任何幫助,我將不勝感激。
這是spring上下文文件:
<beans>
<int-ip:tcp-connection-factory id="crLfServer"
type="server"
port="${availableServerSocket}"
single-use="true"
so-timeout="10000"
using-nio="false"
serializer="connectionSerializeDeserialize"
deserializer="connectionSerializeDeserialize"
/>
<bean id="connectionSerializeDeserialize" class="org.springframework.integration.ip.tcp.serializer.ByteArrayStxEtxSerializer"/>
<int-ip:tcp-inbound-gateway id="gatewayCrLf"
connection-factory="crLfServer"
request-channel="serverBytes2StringChannel"
error-channel="errorChannel"
reply-timeout="10000"/> <!-- reply-timeout works on inbound-gateway -->
<int:channel id="toSA" />
<int:service-activator input-channel="toSA"
ref="myService"
method="prepare"/>
<int:object-to-string-transformer id="serverBytes2String"
input-channel="serverBytes2StringChannel"
output-channel="toSA"/>
<int:transformer id="errorHandler"
input-channel="errorChannel"
expression="payload.failedMessage.payload + ':' + payload.cause.message"/>
</beans>
謝謝
您可以將<publish-subscribe-channel>
添加為該<service-activator>
的output-channel
。 訂閱者之一將是<int-jdbc:outbound-channel-adapter>
來存儲對數據庫的答復。 另一個訂戶應該是<bridge>
而沒有output-channel
假定對<int-ip:tcp-inbound-gateway
>的答復。
但是,是的,這是在發送給客戶之前 ...
為此,您可以在執行super.serialize()
之后擴展Serializer
並使用byte[]
執行所需的邏輯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.