作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我在 TCP 网关上构建的 Spring Integration 应用程序运行良好。它接收到达 TCP 网关的请求消息,并将消息转发给 serviceActivator 以准备响应,并将响应发送给客户端。
我想在发送给客户端后将消息保存到数据库中。我只是想知道是否可以在将响应发送给客户端后将消息转发给另一个 serviceActivator。
如果是,应该如何设置 Spring 配置?在这方面,我将不胜感激。
这是 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>
作为output-channel
为此<service-activator>
.其中一个订阅者是 <int-jdbc:outbound-channel-adapter>
存储对数据库的回复。另一个订阅者应该是 <bridge>
没有 output-channel
假设回复 <int-ip:tcp-inbound-gateway
>。
但是,是的,它是在发送给客户之前...
为此,您可以扩展 Serializer
并使用 byte[]
执行所需的逻辑已经在执行 super.serialize()
之后.
关于java - 在 TCP 网关中发送响应后向 Spring Integration 中的 serviceActivator 发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42212461/
我是一名优秀的程序员,十分优秀!