Camel作为JMS客户端

时间:2014-10-05 20:35:00

标签: java apache-camel

我正在使用Camel处理客户端/服务器请求/回复系统。

客户端和服务器使用两个JMS队列进行通信:请求队列和响应队列。

服务器端有一个camel路由,它同时使用来自请求队列和处理消息的JMS消息。响应将使用响应队列发送回客户端。

客户端向JMS队列发送消息并等待响应。我有两个问题:

  1. 客户端实际上是一个将被其他应用程序使用的库。我也希望在客户端使用Camel,但不知道如何使用Camel作为“函数”,即在我的代码中的某些时候,我需要做“将此对象发送到此camel路由”。我怎么能这样做?

  2. 是否有一种标准方式让camel使用两个队列处理请求/回复?

  3. 非常感谢。

2 个答案:

答案 0 :(得分:1)

  1. 使用CamelContext中的ProducerTemplate。它要求你在某个地方保留一个骆驼环境。

    您可以执行以下操作:producerTemplate.requestBody(myPayload,"jms:queue:whatever");

  2. Camel可以使用several different ways处理请求回复。使用显式回复队列(没有默认使用的临时队列),您可以使用独占模式,速度更快:jms:queue:request.queue?replyTo=client1.replies&replyToType=Exclusive但每个客户端需要一个唯一的队列。另一种选择是所有客户端的共享队列。 URI如下所示:activemq:queue:request.queue?replyTo=shared.replies。请注意:共享回复队列将使用JMS选择器为每个客户端选择消息,这将花费您的性能和往返延迟。

答案 1 :(得分:0)

对于问题1,您可以使用可以调用camel路由的camel producer模板选项。问题2的答案是肯定的,您可以参考http://camel.apache.org/request-reply.html

相关问题