Java 使用CAMEL处理确认?

Java 使用CAMEL处理确认?,java,apache-camel,enterprise-integration,Java,Apache Camel,Enterprise Integration,我让客户端通过不同的方式发送请求,比如web请求、http请求、soap请求或其他渠道 在Camel中,我将它从各个端点接收到jms队列。从队列处理器接收消息。现在处理器 需要根据客户端的首选项(在传入请求中已发送)向客户端发送确认。首选项 他们可能希望通过Web服务、jms或文件系统接收确认 我认为这可以通过bit来完成,但不知何故,我无法继续下去。基本上我不确定 我应该如何使用驼峰内置功能处理从处理器到各个客户端的确认。任何方向都会有帮助吗 更新:-客户端首选项存储在来自客户端的传入请求消息

我让客户端通过不同的方式发送请求,比如web请求、http请求、soap请求或其他渠道

在Camel中,我将它从各个端点接收到jms队列。从队列处理器接收消息。现在处理器 需要根据客户端的首选项(在传入请求中已发送)向客户端发送确认。首选项 他们可能希望通过Web服务、jms或文件系统接收确认

我认为这可以通过bit来完成,但不知何故,我无法继续下去。基本上我不确定 我应该如何使用驼峰内置功能处理从处理器到各个客户端的确认。任何方向都会有帮助吗


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

我认为您描述的是返回地址模式-

junit测试用例中有一些示例代码-

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

假设我们在下面定义了以下端点,我们有一个
从(“直接:开始”)
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,一旦路由完成,它将调用headers值中定义的任何端点,在这种情况下,它将调用“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
头,其中包含一个端点,该端点与响应的发送方式有关。因此,如果他们希望将回复放在队列上,则
JMSReplyTo
头的值将是指定的队列端点。

客户端将如何指定其性能?@Matthew Wilson看到我的updateeyes Mathew我看起来像这样。但我不知道process(replier)将如何将回复消息发送到不同的PRFERES通道,比如发送到客户端的文件请求/webservice/jms请求。你能不能详细说明一下,或者给我举一个很好的例子,说明我的要求,尝试通过谷歌搜索,但找不到任何相关的:(编辑了我的回答,并解释了单元测试,但我需要根据客户偏好向客户发送回复。我不知道如何将回复发送到位于客户机端的文件系统或Web服务?除非您的服务器可以访问客户机文件系统,否则它将无法访问它,除非您使用FTP或类似工具。我如果客户端公开服务器可以访问的Web服务,那么您当然可以调用它?假设我的服务器可以访问特定于客户端的目录,在那里我可以放置我的响应。现在我如何使用驼峰返回地址实现它?