自定义 spring 集成出站网关实现
custom spring integration outbound gateway implementation
如何为出站指定服务实现gateway in Spring Integration? If outbound gateways are for bidirectional communication and generally used to provide integration with external systems and service activators are for local service calls then how to implement outbound gateway for custom transport/external system? Gateway namespace允许为入站网关设置服务接口,但是出站网关的服务实现呢?
<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 工具套件(基于 eclipse),则有一个入门项目可帮助您使用模板构建成熟的网关;它包括名称空间解析器和所有内容的起始 类 (New | Spring | Spring Project | Integration ...
)。该模板托管在这里。它们有点过时(例如需要 SI 更新,并且我们不再使用 docbook - 至少在 master 上 - 我们使用 asciidoc),但它应该会让你走很长一段路。您还可以查看标准解析器以获取有关命名空间的帮助。
如果您认为您的网关可能具有广泛的吸引力,请考虑将其贡献给扩展。
EDIT2:
根据您的评论...
as far as I understood the outbound gateways are used to provide integration with external systems and service activators are for local service calls
通常情况如此,但没有什么可以阻止您通过 <service-activator/>
调用外部服务 - 这是个人喜好问题,没有真正的理由创建正式的适配器,除非您希望发布它以在您的组织内使用 and/or 以更正式的方式将其贡献给社区。
如何为出站指定服务实现gateway in Spring Integration? If outbound gateways are for bidirectional communication and generally used to provide integration with external systems and service activators are for local service calls then how to implement outbound gateway for custom transport/external system? Gateway namespace允许为入站网关设置服务接口,但是出站网关的服务实现呢?
<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 工具套件(基于 eclipse),则有一个入门项目可帮助您使用模板构建成熟的网关;它包括名称空间解析器和所有内容的起始 类 (New | Spring | Spring Project | Integration ...
)。该模板托管在这里。它们有点过时(例如需要 SI 更新,并且我们不再使用 docbook - 至少在 master 上 - 我们使用 asciidoc),但它应该会让你走很长一段路。您还可以查看标准解析器以获取有关命名空间的帮助。
如果您认为您的网关可能具有广泛的吸引力,请考虑将其贡献给扩展。
EDIT2:
根据您的评论...
as far as I understood the outbound gateways are used to provide integration with external systems and service activators are for local service calls
通常情况如此,但没有什么可以阻止您通过 <service-activator/>
调用外部服务 - 这是个人喜好问题,没有真正的理由创建正式的适配器,除非您希望发布它以在您的组织内使用 and/or 以更正式的方式将其贡献给社区。