Spring Cloud Stream @StreamListener и шаблон Resequencer интеграции Spring

AFAIK проект Spring Cloud Stream основан на Spring Integration. Следовательно, мне было интересно, есть ли хороший способ изменить последовательность входящих сообщений до запуска обработчика StreamListener? Или мне нужно собрать весь IntegrationFlow с нуля, используя конфигурацию XML или Java DSL из Spring Integration?

Мой вариант использования следующий. В большинстве случаев я обрабатываю входящие сообщения по теме Kafka по мере их поступления. Однако необходимо изменить последовательность некоторых событий на основе заголовков CORRELATION_ID, SEQUENCE_NUMBER и SEQUENCE_SIZE. Другими словами, я хотел бы как можно чаще использовать StreamListener и просто использовать стратегию изменения последовательности для некоторых событий.


person Daniel Pacak    schedule 22.11.2018    source источник


Ответы (1)


Да, для этого вам нужно будет использовать Spring Integration. Фактически Spring Cloud Stream - это фактически только связующий фреймворк. Он связывает обработчики сообщений с брокерами сообщений через связыватели. Сами обработчики сообщений предоставляются пользователями. Аннотация @StreamListener в значительной степени эквивалентна Spring Integration @ServiceActivator с несколькими дополнительными функциями (например, условной маршрутизацией), но в остальном это просто обработчик сообщений.

Теперь, когда вы ускользнули, вы знаете, что вы можете использовать Spring Integration (SI) для реализации обработчика сообщений или внутреннего потока SI, и это нормально и рекомендуется для сложных случаев.

Тем не менее, мы предоставляем готовые приложения, которые реализуют определенные компоненты EIP, и у нас есть, например, и агрегатор, которое вы можете использовать в качестве отправной точки при реализации повторного упорядочения. Более того, учитывая, что у нас есть приложение агрегатор, а не Resequencer, мы были бы рады принять участие в нем, если вы заинтересованы. Надеюсь, это ответит на ваш вопрос.

person Oleg Zhurakousky    schedule 23.11.2018