【问题标题】:spring-integration-java-dsl channel creationspring-integration-java-dsl 通道创建
【发布时间】:2015-01-29 09:55:16
【问题描述】:

doc 说:如果没有具有此名称的 bean,则将在上下文启动时创建新的 DirectChannel bean。

 @MessagingGateway
    public interface Responder {

        @Gateway(requestChannel = "request.input")
        String respond(String request);

    }

    @Bean
    public IntegrationFlow doResponse(){

        return IntegrationFlows
            .from("request.input")
            .transform("payload")
            .get();

    }

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {IntegrationConfiguration.class})
public class GatewayTests {

    @Autowired Responder responder;

    @Test
    public void test(){

        responder.respond("request");

    }

}

这会导致:没有定义名为“request.input”的 bean 我是否遗漏了一些触发频道创建的内容?

弹簧启动:1.1.9.RELEASE 弹簧集成-java-dsl:1.0.0.RELEASE 弹簧集成:4.0.4.RELEASE

【问题讨论】:

  • 好的,我认为我的错误:IntegrationComponentScan 没有为 MessagingGateway 创建通道
  • 好吧,我完全迷路了。 IntegrationFlow 在哪里知道调用响应程序?

标签: spring-integration


【解决方案1】:

您应该确保 Spring Integration 基础架构已打开:@Configuration 类上的 @EnableIntegration,如果您使用 Spring Boot,则为 @EnableAutoConfiguration

另一方面,并​​非所有auto-channel 功能都适用于 Spring Integration 4.0.x。

这样,您始终可以通过显式 MessageChannel @Bean 来解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 2016-08-13
    • 1970-01-01
    • 2016-12-21
    • 2017-12-31
    • 1970-01-01
    • 2017-12-09
    相关资源
    最近更新 更多