我正在处理Spring集成事件,需要确保事件调用的正确顺序。我有两个监听器。一个叫TerminalErrorListener,用来捕获TcpConnectionExceptionEvent和TcpDeserializationExceptionEvent。第二个叫TerminalDisconnectEventListener,捕捉TcpConnectionCloseEvent,我使用NIO和TcpDeserializationExceptionEvent。
在我的例子中,我使用了NIO,并且手动扩展了我的类TcpNioConnection,它包含一个额外的字段。这个字段被称为Originator,包含了关于什么原因导致TcpConnectionCloseEvent的信息,我的问题来了。
我在TerminalErrorListener里面定义了originator,并且需要确保TerminalDisconnectEventListener在TerminalErrorListener之后被调用。
一般情况下,我如何保证(可能我可以保证关闭事件在错误之后被调用)会发生这种情况?有没有什么优先级模式或默认的流程模式,可以在某种图中看到?我的意思是什么时候调用特定的事件,所有事件的一般顺序是什么。
谢谢你的回答。
使用NIO,不能保证在连接关闭事件之前得到反序列化失败事件。