为什么集成流没有订阅来自通道?

时间:2016-04-03 21:50:38

标签: java spring spring-integration spring-dsl

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

  

线程“main”中的异常   org.springframework.messaging.MessageDeliveryException:Dispatcher有   没有订阅者'channel.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();
    }

}

1 个答案:

答案 0 :(得分:3)

看起来你错过了主要播放器 - <RelativeLayout> ... <fragment android:name= "packagename.button_fragment" ...width, height, id, postion... /> <fragment android:name= "packagename.bMenu" ...width, height, id, postion... />

  

从版本4.0开始,引入了@EnableIntegraion注释,以允许注册Spring Integration基础结构bean(请参阅JavaDocs)。只有Java和Java时才需要这个注释。使用注释配置,例如, 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

相关问题