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

时间:2015-05-26 02:47:03

标签: spring-integration

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

@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没有订阅者频道”的错误。将消息有效负载发送到另一个集成流的首选配置是什么?

1 个答案:

答案 0 :(得分:5)

使用Java DSL channel auto-creation你应该小心。例如,.outputChannel(MessageChannels.queue("inbound").get())没有将MessageChannel bean填充到bean工厂。但是从另一方IntegrationFlows.from("inbound")做到了这一点。

要解决您的问题,我建议您为@Bean频道提取inbound,或者仅依靠DSL:

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

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