spring-integration – Spring集成Java DSL:创建jms消息驱动程序通道适配器

我遇到以下消息驱动程序通道适配器的问题

@Bean
    public IntegrationFlow jmsInboundFlow() {
        return IntegrationFlows.from(Jms.messageDriverChannelAdapter(this.jmsConnectionFactory)
                .outputChannel(MessageChannels.queue("inbound").get())
                .destination("test"))   
                .get();
    }

    @Bean
    public IntegrationFlow channelFlow() {
        return IntegrationFlows.from("inbound")
                .transform("hello "::concat)
                .handle(System.out::println)
                .get();
    }

我收到一个关于“Dispatcher没有订阅者频道”的错误.将消息有效负载发送到另一个集成流的首选配置是什么?

最佳答案
使用Java DSL通道自动创建,您应该小心.例如.outputChannel(MessageChannels.queue(“inbound”).get())不会将MessageChannel bean填充到bean工厂.但是从另一端IntegrationFlows.from(“inbound”)就是这样做的.

为了解决您的问题,我建议您为入站频道提取@Bean,或者只依靠DSL:

return IntegrationFlows.from(Jms.messageDriverChannelAdapter(this.jmsConnectionFactory)
            .destination("test"))
            .channel(MessageChannels.queue("inbound").get())   
            .get();

随意提出GH问题来修复.outputChannel()上的JavaDocs,或者将它全部删除,因为它很混乱.

转载注明原文:spring-integration – Spring集成Java DSL:创建jms消息驱动程序通道适配器 - 代码日志