【问题标题】:Why doesn't integration flow subscribe to the from channel?为什么集成流不订阅 from 频道?
【发布时间】:2016-04-03 21:50:38
【问题描述】:

对我来说,这似乎是最简单的 spring 集成示例。我正在尝试向si4demo 学习。但是当我运行它时,我得到了这个异常:

线程“main”中的异常 org.springframework.messaging.MessageDeliveryException:调度程序有 频道“application.inbox”没有订阅者。嵌套异常是 org.springframework.integration.MessageDispatchingException: Dispatcher 没有订阅者

我哪里错了?定义的流程不会创建对收件箱频道的订阅吗?

import org.springframework.boot.SpringApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.integration.annotation.IntegrationComponentScan;
import org.springframework.integration.annotation.MessagingGateway;
import org.springframework.integration.channel.DirectChannel;
import org.springframework.integration.dsl.IntegrationFlow;
import org.springframework.integration.dsl.IntegrationFlows;
import org.springframework.messaging.MessageChannel;

@Configuration
@ComponentScan
@IntegrationComponentScan
public class App {

    public static void main(String[] args) {

        try (ConfigurableApplicationContext ctx = SpringApplication.run(App.class, args)) {

            final Gateway gateway = ctx.getBean(Gateway.class);
            final String rs = gateway.send("hullo");
            System.out.println(rs);

        }

    }

    private static final String INBOX = "inbox";

    @MessagingGateway(defaultRequestChannel = INBOX)
    public interface Gateway {
        String send(String msg);
    }

    @Bean
    public IntegrationFlow flow() {
        return IntegrationFlows.from(INBOX)
                .transform(p -> "world")
                .get();
    }

    @Bean(name = INBOX)
    public MessageChannel inbox() {
        return new DirectChannel();
    }

}

【问题讨论】:

    标签: java spring spring-integration spring-dsl


    【解决方案1】:

    看来你错过了主要玩家-@EnableIntegraion

    从 4.0 版开始,引入了 @EnableIntegration 注释,以允许注册 Spring Integration 基础设施 bean(请参阅 JavaDocs)。当仅使用 Java & Annotation 配置时,此注解是必需的,例如具有 Spring Boot 和/或 Spring Integration Messaging Annotation 支持和 Spring Integration Java DSL,无需 XML 集成配置。

    http://docs.spring.io/spring-integration/docs/4.3.0.BUILD-SNAPSHOT/reference/html/overview.html#configuration-enable-integration

    【讨论】:

    • 我特别感谢 TFM 的链接!
    猜你喜欢
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2013-08-20
    • 1970-01-01
    • 2021-10-29
    • 2015-10-14
    相关资源
    最近更新 更多