java - 同一路线构建器中不同路线上的 Camel Exchange

标签 java apache-camel

我的 REST 应用程序会将数据发布到rabbitMQ 上的队列 (Q1)。还有另一个单独的应用程序将从 Q1 读取数据、处理数据并将结果发送回 Q2。我的应用程序将从 Q2 读取数据并返回结果。许多客户端会使用这两个队列,因此我生成一个 UUID 并将其设置在 header 中,以便我可以监听 Q2(响应主题)。然后,我将查询每条传入消息,并将 header 中传入的 UUID 与我发布到 Q1 时生成的 UUID 进行匹配。

from("direct:test")
        .choice().when(isValid)
        .bean(FOOProcessor.class, "setFooQuery")
        .to(FOO_REQUEST_QUEUE).log(LoggingLevel.INFO, "body=${in.body}")
        .otherwise()
        .setBody(constant("error"))
        .setHeader(Exchange.HTTP_RESPONSE_CODE, constant(400)).log(LoggingLevel.INFO, "body=${in.body}")
        .to("direct:error");
from(FOO_RESPONSE_QUEUE)
        .unmarshal(new JacksonDataFormat(JsonNode.class))
        .bean(FooProcessor.class, "setFooResponse")
        .to("direct:end");
from("direct:error").log(LoggingLevel.DEBUG, "end");
from("direct:end").log(LoggingLevel.DEBUG, "end");

问题是 2 个“from”语句 - 它们创建单独的 Camel 交换/上下文,但我无法获取原始的 UUID。有什么建议吗?

最佳答案

我通过使用嵌入了路由构建器(具有自己的生产者和消费者)的处理器解决了这个问题。 处理器从此提供了对主交换的引用

process(final Exchange exchange)

关于java - 同一路线构建器中不同路线上的 Camel Exchange,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36000942/

相关文章:

java - 使用 jackson-mapper 解析为 json 的原因

java - 通过副本 tcp 套接字发送 Java 对象

java - 编辑 "Create local variable"模板以摆脱 Intellij IDEA 中的 "final"修饰符

java - 如何在 java 中正确地向 Soap 元素添加属性

java - R Shiny 应用程序 - 窗口打开时没有任何内容

java - java中的XOR绘画问题

hadoop - 通过 Camel 将文件复制到HDFS2不起作用

java - Camel servlet 监听地址

java - Camel Spring MVC 集成

java - 让 spring 上下文变量指向 webapp 中的实际外部上下文