Configuration spring集成配置日志通道适配器

Configuration spring集成配置日志通道适配器,configuration,spring-integration,Configuration,Spring Integration,目前正在使用spring集成4.2.8 关于这一点,我已经处理了很多以前的问题,但是我有一个xml配置,我不知道如何在新的配置类中替换它:它是日志通道适配器,似乎没有匹配的类 我能找到的唯一类是LoggingChannelAdapterParser,但它只是用来读取xml并输出一些东西(AbstractBeanDefinition) 如何在recipientListRouter中指定日志输出 <int:logging-channel-adapter id="dlq-logger" le

目前正在使用spring集成4.2.8

关于这一点,我已经处理了很多以前的问题,但是我有一个xml配置,我不知道如何在新的配置类中替换它:它是日志通道适配器,似乎没有匹配的类

我能找到的唯一类是LoggingChannelAdapterParser,但它只是用来读取xml并输出一些东西(AbstractBeanDefinition)

如何在recipientListRouter中指定日志输出

  <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>
编辑-来自gary的答案 如果这看起来很合理,那么这是最可能的答案,我应该用哪种方式连接它,日志处理程序可以是收件人吗?如果是,我还需要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;
}

它被称为
LoggingHandler
-请参阅

从Artem Bilan编辑

还要注意
的文档:


定义的消息生成端点
'org.springframework.integration.handler.LoggingHandler'。
然后转到本文档以进一步了解模型:

Gary的评论:


消费端点由2个bean组成;消费者(带有输入通道)和消息处理程序;XML生成了这两种语言;通过Java配置,@Bean创建处理程序,@ServiceActivator定义使用者。因此,在您的情况下,它将是@ServiceActivator(inputChannel=“dlqLogger”)。路由器具有选择器表达式

抱歉,我表现出我的无知,inputChanel是recipientList,还是我使用日志处理程序作为收件人列表中的收件人。如果收件人是输入更改,我在哪里指定选择器表达式,我将在问题中添加这个额外的细节;消费者(带有输入通道)和消息处理程序;XML生成了这两种语言;通过Java配置,@Bean创建处理程序,
@ServiceActivator
定义使用者。因此,在您的情况下,它将是
@ServiceActivator(inputChannel=“dlqLogger”)
。路由器具有选择器表达式。
@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;
}
@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;
}
<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>