gpt4 book ai didi

java - 访问 Camel 中的初始交换消息

转载 作者:行者123 更新时间:2023-11-30 04:52:16 24 4
gpt4 key购买 nike

大家好,当我需要对 XML 请求进行“复合”处理时,我会遇到以下情况。这是我的 Spring 路线定义的片段:

        <route id="request1">
<from uri="activemq:request1" />
<unmarshal ref="integrationServerJaxb" />
<bean ref="createTINValidationMessage" />
<bean ref="switchComponent" />
<bean ref="createCreateTINMessage" />
<bean ref="switchComponent" />
<bean ref="createResponse1" />
<marshal ref="integrationServerJaxb" />
</route>

基本上我想要实现的是:

  1. 从 request1 消息队列中抓取消息
  2. 从中创建 TIN VALIDATION 消息
  3. 向交换机发送 TIN VALIDATION 消息
  4. 等待开关响应
  5. 使用第 4 步中的交换机响应和初始请求 1 XML 消息,创建 CREATE TIN 消息
  6. 向交换机发送消息(来自第 5 步)
  7. 根据交换机的响应创建响应 XML(来自第 6 步)

换句话说,我需要在处理过程中获取初始消息。在 CreateCreateTINMessage bean 中,我可以将方法参数更改为 Message 类型,然后它将映射到实际的 Camel 消息(尽管来自上一步),而不是交换中的第一条消息。检查消息的交换,我可以使用 request1 xml 负载跟踪初始 JMS 消息,但深入到这个程度似乎并不正确。我的问题是,是否可以以某种方式与路由中的中间结果和初始消息进行集成?谢谢。

最佳答案

当然,只需将其显式保留在交换属性(或消息 header )中...

from(...)
.setProperty("ORIG_EXCH",body())
...
.process(new Processor() {
public void process(Exchange exch) throws Exception {
Object orig = exch.getProperty("ORIG_EXCH");
...
}
})
...

或者您可以使用此 API 从您的 route 检索它...

exchange.getUnitOfWork().getOriginalInMessage();

关于java - 访问 Camel 中的初始交换消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9577801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com