Отбрасывание сообщения в активаторе службы Spring Integration DSL - PullRequest
0 голосов
/ 12 февраля 2020

Есть ли способ, которым мы можем отбросить сообщение из активатора службы Spring Integration Service, которое определено с помощью метода Spring Integration DSL .handle()?

Точнее говоря, исходя из приведенного ниже определения IntegrationFlow ...

public IntegrationFlow sampleFlow() {
    return IntegrationFlows
             .from("someChannel")
             .handle(someServiceClass::someMethod)
             .get();
}

Есть ли способ отклонить сообщение на основании некоторой оценки в определении someMethod? В идеале я хотел бы выполнить некоторую регистрацию и затем отбросить.

Я обнаружил, что возвращение null из someMethod, кажется, эффективно заканчивает поток, но я не уверен, является ли это наиболее изящным / правильное решение. Если это рекомендуемое решение, это нормально.

1 Ответ

2 голосов
/ 12 февраля 2020

Это верно. Это действительно неформальный шаблон для остановки обработки, возвращающий null из сервисного метода. Мы даже задокументировали это неофициальным способом: https://docs.spring.io/spring-integration/docs/5.2.3.RELEASE/reference/html/messaging-endpoints.html#service -activator-namespace

Активатор службы - это один из тех компонентов, который не требуется для создания ответного сообщения. , Если ваш метод возвращает значение null или имеет тип возврата void, активатор службы завершает работу после вызова метода без каких-либо сигналов.

Вы также можете достичь цели сброса и входа с filter().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...