首页 文章

没有activemq / jms的apache-camel请求/回复

提问于
浏览
1

我的要求是有一个Web服务,它将接收来自客户端的请求,然后通过camel路由,丰富它并将其转发到其他客户端的另一个Web服务,获得响应并将其发送回原始请求者 .

from(webserviceURI)
  .inOut().to("jms:queue:INQueue?replyTo=OUTQueue?replyToType=Exclusive");

from(jms:queue:INQueue).to("http:X").to(jms:OUTQueue)

我理解正确 . 如果我们这样做,我们需要设置ReplyTo标头 . 我猜这解决了这个问题 . 在一个后期克劳斯(骆驼神:P)的早期解释说,没有必要设置相关id,因为如果它没有被分配,camel会自动设置 . Refer Here

我的问题是我们正在寻找超轻量级的实现 . 我们可能不得不面对低至300 MB的内存 . 没有activeMQ,没有SMX . 只需要使用karaf.what是最好的jms提供者,如果我们需要使用小的jms footprint.or是activemq好的 .

我也想过这样做

<from uri="cxf:bean:cxfProxyEndpoint?dataFormat=MESSAGE" />
<camel:convertBodyTo type="java.lang.String"></camel:convertBodyTo>
<!-- lot of pre processors  here-->
<to uri="http://X:8080/X">
<!-- lot of post processors-->

cxf代理webservice具有返回值的操作 . 因此,我们收到请求,将其发送到预处理器,然后将远程webservice作为http endpoints 调用,获取响应,后处理它,并且响应是路由结束时的消息(我是正确的)我的问题是请求和响应是否匹配 . 我应该如何测试它 . 我们还会将代理请求组播到各种http endpoints ,并在将回复发送给客户请求者之前汇总回复 . 我应该真的继续这条路线或这是一个糟糕的设计 .

1 回答

  • 3

    是的,后一个例子会匹配 . 每个Web服务请求将单独路由,外部http服务器的响应将自动匹配 . 在您的用例中,您很可能不需要JMS .

    如果您有一个外部系统并且需要使用JMS消息传递与JIT消息集成,那么JMS是有意义的 . 否则,我建议在没有它的情况下寻找解决方案 .

相关问题