首页 > 解决方案 > Spring 集成 DSL - CharacterStreamWritingMessageHandler

问题描述

我正在为 basic-amqp 示例编写示例代码(https://github.com/spring-projects/spring-integration-samples/blob/master/basic/amqp/src/main/resources/META-INF/spring/ DSL 中的 integration/spring-integration-context.xml )

@Bean
public IntegrationFlow receiveGreetingFromGreetingQueueToConsole(ConnectionFactory connectionFactory) {

    return IntegrationFlows.from(Amqp.inboundAdapter(connectionFactory, "greeting.queue"))
            .log()
            .<String,String>transform(m -> "Received " + m)
            .handle(CharacterStreamWritingMessageHandler.stdout())
            .get();

}

如何应用 setShouldAppendNewLine 布尔值

.handle(CharacterStreamWritingMessageHandler.stdout())

我不想将处理程序声明为仅设置此属性的 bean。希望标准输出为此接受了一个参数。

标签: lambdaspring-integrationspring-integration-dsl

解决方案


不一定是豆子...

@Bean
public IntegrationFlow receiveGreetingFromGreetingQueueToConsole(ConnectionFactory connectionFactory) {

    CharacterStreamWritingMessageHandler stdout = CharacterStreamWritingMessageHandler.stdout();
    stdout.setShouldAppendNewLine(true);
    return IntegrationFlows.from(Amqp.inboundAdapter(connectionFactory, "greeting.queue"))
            .log()
            .<String,String>transform(m -> "Received " + m)
            .handle(stdout)
            .get();

}

但是,我同意 DSL 使用流畅的 API 会很好。请在 GitHub 上打开一个问题。


推荐阅读