繁体   English   中英

自定义spring集成出站网关实现

[英]custom spring integration outbound gateway implementation

如何在Spring Integration中为出站网关指定服务实现? 如果出站网关用于双向通信并且通常用于与外部系统集成,而服务激活器用于本地服务呼叫,那么如何为自定义传输/外部系统实现出站网关呢? 网关名称空间允许设置入站网关的服务接口,但是出站网关的服务实现又如何呢?

<int:gateway id="cafeService"
         service-interface="org.cafeteria.Cafe"
         default-request-channel="requestChannel"
         default-reply-channel="replyChannel"/>

最简单的机制是将您的服务接口实现为POJO并从

<service-activator input-channel="..." output-channel="..." 
      ref="myPojo" method="process" />

哪里

public class MyPoJo {

    public Bar process(Foo foo) {

        ...

    }

}

如果要更正式地执行此操作,可以扩展AbstractReplyProducingMessageHandler 并将其包装在使用者端点中,但是POJO路由最受首选,因为这样您就不会有框架依赖性。

编辑

如果您使用Spring Tool Suite(基于eclipse),则有一个入门项目可帮助您使用模板构建功能完善的网关。 它包括用于名称空间解析器的启动器类以及所有内容(“ New | Spring | Spring Project | Integration ... )。 模板托管在此处。 它们有些过时了(例如,需要进行SI更新,并且我们不再使用docbook-至少在master上使用-我们使用asciidoc),但是这需要花费很长时间。 您也可以查看标准解析器以获取有关名称空间的帮助。

如果您认为您的网关可能具有广泛的吸引力,请考虑将其贡献给扩展。

编辑2

根据您的评论...

据我了解,出站网关用于与外部系统集成,服务激活器用于本地服务调用

通常是这样,但是并没有阻止您通过<service-activator/>调用外部服务的方法-这是个人喜好问题,除非您希望发布它,否则没有真正的理由创建正式的适配器在组织内使用和/或以更正式的方式将其贡献给社区。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM