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