2014-10-05 126 views
1

我正在使用骆驼的客户端/服务器请求/回复系统。骆驼作为JMS客户端

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

服务器端有骆驼路由,它会从请求队列中消耗JMS消息并同时处理消息。使用响应队列将响应发送回客户端。

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

  1. 客户端实际上是一个库,它将被其他应用程序使用。我想在客户端使用Camel,但不知道如何将Camel用作“函数”,即在我的代码中的某个时刻,我需要“将此对象发送给这条骆驼路线”。我怎样才能做到这一点?

  2. 骆驼是否有标准的方式来处理使用两个队列的请求/回复?

非常感谢。

回答

1
  1. 从CamelContext使用ProducerTemplate。它要求你在某处保留一个骆驼环境。

    你可以做的东西,如:producerTemplate.requestBody(myPayload,"jms:queue:whatever");

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