Spring Integration Конфигурация протоколирования канала Адаптер - PullRequest
0 голосов
/ 18 октября 2018

В настоящее время используется интеграция с пружиной 4.2.8.

Мне удалось решить довольно много моих предыдущих вопросов по этому поводу, но у меня есть 1 фрагмент конфигурации xml, я не могу понять, как заменить новую конфигурациюclass: это logging-channel-adapter, который, кажется, не соответствует классу.

Единственный класс, который я могу найти, - это LoggingChannelAdapterParser, но он просто предназначен для чтения xml и вывода чего-либо (AbstractBeanDefinition)

Как мне указать выходные данные журнала в receientListRouter?

  <int:logging-channel-adapter id="dlq-logger" level="ERROR" expression="'Unknown action type ['
    .concat(headers.actionType)
    .concat('] for message with payload ')
    .concat(payload)"/>

<int:recipient-list-router input-channel="jms-inbound" id="action-type-router">
        <int:recipient channel="inbound1" selector-expression="headers.actionType == 'CREATE'"/>
        <int:recipient channel="inbound2" selector-expression="headers.actionType == 'UPDATE'"/>
        <int:recipient channel="dlq-logger" selector-expression="headers.actionType != 'UPDATE' and headers.actionType != 'CREATE' "/>
    </int:recipient-list-router>

Вот конструктор receinetListRouter

@ServiceActivator(inputChannel = "routingChannel")
  @Bean
  RecipientListRouter actionTypeRouter(){

    RecipientListRouter router = new RecipientListRouter();
    router.setChannels()
    router.addRecipient("Inbound1", "headers.actionType == 'CREATE'")
    router.addRecipient("Inbound2", "headers.actionType == 'UPDATE'")
    router.addRecipient("dlqLogger", "headers.actionType != 'UPDATE' and headers.actionType != 'CREATE' ")
  }

Правка - из ответа Гэри Если, как кажетсяразумно, это наиболее вероятный ответ, каким способом я могу связать его, может ли обработчик регистрации быть получателем?если так, то мне все еще нужна аннотация ServiceActivator?Или это двусторонние отношения?

@Bean
@ServiceActivator(inputChannel = "logChannel")
public LoggingHandler logging() {
    LoggingHandler adapter = new LoggingHandler(LoggingHandler.Level.DEBUG);
    adapter.setLoggerName("TEST_LOGGER");
    adapter.setLogExpressionString("headers.id + ': ' + payload");
    return adapter;
}

1 Ответ

0 голосов
/ 18 октября 2018

Это называется LoggingHandler - см. документацию .

@Bean
@ServiceActivator(inputChannel = "logChannel")
public LoggingHandler logging() {
    LoggingHandler adapter = new LoggingHandler(LoggingHandler.Level.DEBUG);
    adapter.setLoggerName("TEST_LOGGER");
    adapter.setLogExpressionString("headers.id + ': ' + payload");
    return adapter;
}

РЕДАКТИРОВАТЬ от Артема Билана

Также обратите внимание на документыиз <int:logging-channel-adapter>:

<xsd:element name="logging-channel-adapter">
    <xsd:annotation>
        <xsd:documentation>
            Defines a Message Producing Endpoint for the
            'org.springframework.integration.handler.LoggingHandler'.
        </xsd:documentation>
    </xsd:annotation>

А затем перейдите к этой документации для более полного понимания модели: https://docs.spring.io/spring-integration/reference/html/overview.html#_finding_class_names_for_java_and_dsl_configuration

Комментарий от Гэри:

конечные точки потребления состоят из 2 бобов;потребитель (с входным каналом) и обработчик сообщений;XML генерирует оба;в Java Configuration @Bean создает обработчик, а @ServiceActivator определяет потребителя.Так что в вашем случае это будет @ServiceActivator (inputChannel = "dlqLogger").Маршрутизатор имеет выражения выбора.-

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