gpt4 book ai didi

java - 在 TCP 网关中发送响应后向 Spring Integration 中的 serviceActivator 发送消息

转载 作者:可可西里 更新时间:2023-11-01 02:48:13 25 4
gpt4 key购买 nike

我在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com