gpt4 book ai didi

java - 使用 CAMEL 处理确认?

转载 作者:行者123 更新时间:2023-12-01 13:09:24 25 4
gpt4 key购买 nike

我有客户端通过不同的方式发送请求,例如 Web 请求、http 请求、soap 请求或通过其他 channel 。

在Camel中,我从各自的端点接收到jms队列。处理器从队列中拾取消息。现在处理器需要根据客户的偏好(他们在传入请求中发送)向客户发送确认。偏好他们可能希望通过 web 服务、jms 或文件系统任何东西接收确认。

我认为可以用 http://camel.apache.org/request-reply.html 来完成不知怎的,我无法继续下去。基本上我不确定我应该如何使用 CAMEL 内置功能处理从处理器到各个客户端的确认。任何方向会有帮助吗?

更新:- 客户端首选项存储在来自客户端的传入请求消息中。您还可以假设它存储在系统中的某个位置(数据库或属性文件)

最佳答案

我认为这是您所描述的返回地址模式 - https://camel.apache.org/return-address.html

这里的 junit 测试用例中有一些示例代码 - http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsInOnlyWithReplyToAsHeaderTest.java?view=markup

编辑:从上面的链接添加一些示例代码以更好地解释它:

因此,假设我们在下面定义了以下端点,我们有一个from("direct:start"),from("activemq:queue:foo")from("activemq:queue:bar?disableReplyTo=true")

在我们的实际测试中我们调用这段代码:

template.sendBodyAndHeader("direct:start", "World", "JMSReplyTo", "queue:bar");

这会向 direct:start 端点发送一条消息,消息正文包含“World”,标题名为 JMSReplyTo,值为“queue:bar”。因为我们已经指定了此 JMSReplyTo header ,所以一旦路由完成,它将调用 header 值中定义的任何端点,在本例中它将调用“queue:bar”端点。

@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
from("direct:start")
// must enable preserveMessageQos to force Camel to use the JMSReplyTo header
.to("activemq:queue:foo?preserveMessageQos=true")
.to("mock:done");

from("activemq:queue:foo")
.to("log:foo?showAll=true", "mock:foo")
.transform(body().prepend("Bye "));

// we should disable reply to to avoid sending the message back to our self
// after we have consumed it
from("activemq:queue:bar?disableReplyTo=true")
.to("log:bar?showAll=true", "mock:bar");
}
};
}

那么这如何适合您的用例呢?那么将会发生的是客户端,或者您编写的某些代码将指定 JMSReplyTo header 以及与如何发送响应相关的端点。因此,如果他们希望将回复放置在队列中,则 JMSReplyTo header 的值将是指定的队列端点。

关于java - 使用 CAMEL 处理确认?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23010375/

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