【问题标题】:Spring Integration - how to pass parameters into the method of service activatorSpring Integration - 如何将参数传递到服务激活器的方法中
【发布时间】:2018-08-13 22:02:38
【问题描述】:

我需要在通过服务激活器调用的方法中传递参数。在 header-enricher 的帮助下,我能够成功地做到这一点。下面是工作代码 sn-p。

<int:chain input-channel="inChannel">
    <int:header-enricher>
        <int:header name="routeName" value="TestRoute" />
    </int:header-enricher>
    <int:service-activator ref="customLoggingRoute"
        method="logRoute">
    </int:service-activator>
</int:chain>


public Message logRoute(Message m, @Header("routeName") String routeName) {
    System.out.println("Inside route: " + routeName);
    return m;
}

但我不想在标题中添加任何内容。是否有任何替代方法可以在不使用 header-enricher 的情况下完成相同的事情。

【问题讨论】:

    标签: spring-integration


    【解决方案1】:

    不,没有。调用者的 Spring 集成契约是消息传递。因此,当我们之间只有一条消息时,我们就没有什么可以利用的了。您可以拥有一个复杂的payload 对象并通过它传输数据,或者将您的数据移动到标题中。

    当然,您可以考虑使用ThreadLocal,因为我们使用的是 Java 并且只要您的流程在同一个线程中,但这会有点开销。

    我认为您需要从消息传递理论开始,当您了解所有这些限制时再回到我们身边。

    https://www.enterpriseintegrationpatterns.com/

    【讨论】:

    • 感谢 Artem 的快速回复。
    猜你喜欢
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    相关资源
    最近更新 更多