Я имею дело с Spring Integration Events и мне нужно обеспечить правильный порядок вызовов событий. У меня есть два слушателя. Один из них называется TerminalErrorListener и перехватывает TcpConnectionExceptionEvent и TcpDeserializationExceptionEvent. Второй называется TerminalDisconnectEventListener и перехватывает TcpConnectionCloseEvent.
В моем случае я использую NIO и вручную расширяю TcpNioConnection с моим классом, который содержит одно дополнительное поле. Это поле называется Originator и содержит информацию о том, что вызвало TcpConnectionCloseEvent, и здесь возникает мой вопрос.
Я определяю источник в TerminalErrorListener и должен убедиться, что TerminalDisconnectEventListener вызывается после TerminalErrorListener.
Как можно Я вообще гарантирую (возможно, я могу гарантировать, что событие close вызывается после ошибки), что это произойдет? Есть ли какой-нибудь приоритетный режим или модель потока по умолчанию, которую можно увидеть на некоторой диаграмме? Я имею в виду, когда вызываются конкретные c события и какова общая последовательность всех событий.
Спасибо за ответ.