为什么将SI“管道和过滤器”体系结构的中间“过滤器”称为消息端点?

时间:2018-11-08 11:06:01

标签: spring-integration spring-integration-dsl

doc的片段

  

消息端点表示管道过滤器的“过滤器”   建筑。如前所述,端点的主要作用是   将应用程序代码连接到消息传递框架,并在   无创方式。换句话说,应用程序代码应   理想情况下不了解消息对象或消息   渠道。

变压器,过滤器,服务激活器都是Message Endpoints。 我不明白为什么要调用它们,以便应用程序实际上可以将消息发送到输入通道,而这些“端点”在链的中间使用。换句话说,该应用知道通道,而不知道端点。 示例:

@SpringBootApplication
@IntegrationComponentScan
public class SendToInputChannel {

    @Bean
        public IntegrationFlow flow() {
            return IntegrationFlows.from("input")
                .handle(System.out::println).get();
        }

    public static void main(String[] args) throws IOException {
        ConfigurableApplicationContext ctx = SpringApplication.run(SendToInputChannel.class, args);

        MessageChannel inputChannel = ctx.getBean("input", MessageChannel.class);
        for (int i = 0; i < 10; i++) {
            inputChannel.send(MessageBuilder.withPayload(i)
                .build());
        }

        ctx.close();

    }

}

1 个答案:

答案 0 :(得分:2)

Ekaterina,这一切都从Enterprise Integration Patterns (EIP) book开始,Spring Integration(SI)实际上是EIP的参考实现。我们试图与“那个脚本”保持非常接近。因此,您可以从this excerpt中看到-消息端点用于将应用程序连接到消息传递通道。换句话说,SI本身就是一个消息传递框架,因为它提供了可以连接各种 Filters / Endpoints 的内部通道。 请记住,1是一个接口,不仅可以表示在SI中实现的内部通道。例如,可以实现一个MessageChannel接口,该接口为JMS队列或其他任何内容提供一些代理,而 Filters / Endpoints 将保持不变/不变。

我可以继续,但是我希望现在就足够了,但是可以免费跟进。