gpt4 book ai didi

tcp - 确保 spring-integration 事件的正确顺序

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

我们正在使用 spring-integration 进行 TCP 通信,并看到在该连接上的消息之前收到 TcpConnectionCloseEvent 的行为。

这是一个问题,因为我们正在使用 TCP 事件来跟踪连接等,当我们需要在我们认为已关闭的连接上接受消息时,它会导致更加复杂的场景。

反之亦然 - 有时我们会收到一条连接消息,但我们还不知道该连接已打开。

有什么方法可以确保这些事件的正确顺序,即使它们本质上是异步的?

(感谢您在 stackoverflow 上的精彩回答,Gary)。

最佳答案

嗯...

在服务器端,打开事件是由接受新连接的线程而不是连接本身发布的。虽然我们可以在那里做一些事情,但在使用 NIO 时它仍然不是万无一失的,因为那里的线程模型要复杂得多,并且即使连接本身发布了事件也无法保证顺序。

老实说,我们没有预料到事件会以这种方式使用 - 主要驱动程序(用于打开事件)是允许应用程序检测新连接而无需客户端实际发送任何内容(只是连接) - 允许服务器端应用程序接受新连接,获取连接 ID 的句柄,以便它可以发送欢迎消息。

一种解决方法可能是使用事件入站 channel 适配器和 <delayer/>延迟事件传递到您的应用程序(在关闭的情况下)。

对于开放事件的延迟交付,我确实没有很好的解决方案;也许只是将"new"连接的入站消息视为“打开”事件(例如,当您在处理消息的线程上检测到这种情况时发布您自己的打开事件,并忽略“真实”事件)。

关于tcp - 确保 spring-integration 事件的正确顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25681950/

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