Spring integration 为什么是中间人;过滤器“;“国际标准化组织”;管道和过滤器“;称为消息端点的体系结构?

Spring integration 为什么是中间人;过滤器“;“国际标准化组织”;管道和过滤器“;称为消息端点的体系结构?,spring-integration,spring-integration-dsl,Spring Integration,Spring Integration Dsl,碎片 消息端点表示管道和过滤器的“过滤器” 建筑学如前所述,端点的主要角色是 将应用程序代码连接到消息传递框架,并在 非侵入性方式。换句话说,应用程序代码应该 理想情况下,不知道消息对象或消息 频道 转换器、筛选器和服务激活器都是消息端点。 我不理解的是,为什么它们被调用,因为应用程序实际上可以将消息发送到输入通道,而这些端点在链的中间使用。换句话说,应用程序知道一个频道,而不是端点。 例如: @springboot应用程序 @集成组件扫描 公共类SendToInputChannel{ @豆子

碎片

消息端点表示管道和过滤器的“过滤器” 建筑学如前所述,端点的主要角色是 将应用程序代码连接到消息传递框架,并在 非侵入性方式。换句话说,应用程序代码应该 理想情况下,不知道消息对象或消息 频道

转换器、筛选器和服务激活器都是
消息端点
。 我不理解的是,为什么它们被调用,因为应用程序实际上可以将消息发送到输入通道,而这些端点在链的中间使用。换句话说,应用程序知道一个频道,而不是端点。 例如:

@springboot应用程序
@集成组件扫描
公共类SendToInputChannel{
@豆子
公共集成流(){
返回IntegrationFlows.from(“输入”)
.handle(System.out::println.get();
}
公共静态void main(字符串[]args)引发IOException{
ConfigurableApplicationContext ctx=SpringApplication.run(SendToInputChannel.class,args);
MessageChannel inputChannel=ctx.getBean(“输入”,MessageChannel.class);
对于(int i=0;i<10;i++){
inputChannel.send(MessageBuilder.withPayload(i)
.build());
}
ctx.close();
}
}

叶卡捷琳娜,这一切都始于春天,Spring集成(SI)实际上是EIP的参考实现。我们一直在努力接近“那个剧本”。正如您从中看到的,消息端点用于将应用程序连接到消息传递通道。换句话说,SI本身就是一个消息传递框架,因为它提供了各种过滤器/端点可以连接到的内部通道。 请记住,
MessageChannel
是一个接口,它不仅可以表示SI中实现的内部通道。例如,可以实现一个MessageChannel接口,该接口为JMS队列或任何其他对象提供代理,而过滤器/端点将保持不变


我可以继续讲下去,但我希望现在已经足够了,但后续工作不需要付费。

叶卡捷琳娜,这一切都是从一开始的,Spring集成(SI)实际上是EIP的一个参考实现。我们一直在努力接近“那个剧本”。正如您从中看到的,消息端点用于将应用程序连接到消息传递通道。换句话说,SI本身就是一个消息传递框架,因为它提供了各种过滤器/端点可以连接到的内部通道。 请记住,
MessageChannel
是一个接口,它不仅可以表示SI中实现的内部通道。例如,可以实现一个MessageChannel接口,该接口为JMS队列或任何其他对象提供代理,而过滤器/端点将保持不变

我可以继续,但我希望现在这已经足够了,但后续行动是免费的

@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();

    }

}