我正在使用Camel处理客户端/服务器请求/回复系统。
客户端和服务器使用两个JMS队列进行通信:请求队列和响应队列。
服务器端有一个camel路由,它同时使用来自请求队列和处理消息的JMS消息。响应将使用响应队列发送回客户端。
客户端向JMS队列发送消息并等待响应。我有两个问题:
客户端实际上是一个将被其他应用程序使用的库。我也希望在客户端使用Camel,但不知道如何使用Camel作为“函数”,即在我的代码中的某些时候,我需要做“将此对象发送到此camel路由”。我怎么能这样做?
是否有一种标准方式让camel使用两个队列处理请求/回复?
非常感谢。
答案 0 :(得分:1)
使用CamelContext中的ProducerTemplate。它要求你在某个地方保留一个骆驼环境。
您可以执行以下操作:producerTemplate.requestBody(myPayload,"jms:queue:whatever");
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