【发布时间】:2016-05-30 11:25:16
【问题描述】:
在 Spring Integration 中处理消息的方法很少。一种方法是在 <int:enricher> 中调用 bean 的方法,该方法将返回一个对象并将其分配给给定的名称,例如:
<!-- calls getKey method of IdGenerator bean which returns String with some value -->
<int:enricher input-channel="a.channel" output-channel="b.channel" id="preTranslator">
<int:header name="Key" expression="@IdGenerator.getId(payload)"/>
</int:enricher>
同样可以用于过滤:
int:filter discard-channel="d.channel" input-channel="b.channel" output-channel="c.channel"
expression="@Cache.hasKey(headers.Key) == false"/>
另一方面,我可以在实现MessageProcessor 接口的类上调用<int:service-activator>。它将获取原始消息并返回带有新标头字段的副本。不过,这需要我的班级方法始终使用 MessageBuilder 构建新消息。
目前,我使用第一种方式来丰富简单的字段,并使用服务激活器来从数据库/外部服务请求数据。选择正确方法的正确方法是什么?
【问题讨论】:
标签: java spring spring-integration