ExchangePattern.InOnly对mq端点的影响

时间:2013-02-27 04:31:05

标签: activemq apache-camel

我的路线定义为

from("jetty:http://0.0.0.0:xxxx/abc").to("activemq:queue:queue1").setExchangePattern(ExchangePattern.InOnly);

我知道这条路由会向代理丢弃一个meessage,并且不会等待消息使用者消耗它。我想了解ExchangePattern.InOnly对经纪人接受消息的影响。我在代理上启用了持久性。上述路由是否确保在交换完成之前保留它。

1 个答案:

答案 0 :(得分:3)

您需要在发送到JMS队列之前设置MEP。另一种方法是告诉在发送到队列时使用InOnly。所以你可以做到

from("jetty:http://0.0.0.0:xxxx/abc")
  .setExchangePattern(ExchangePattern.InOnly)
  .to("activemq:queue:queue1");

或者

from("jetty:http://0.0.0.0:xxxx/abc")
  .to(ExchangePattern.InOnly, "activemq:queue:queue1");

您可以在Camel网站上查看有关活动和请求 - 回复消息EIPs

的更多详细信息

如果您在代理上启用了持久性,那么它会将消息存储在持久性存储中,当它收到消息时,并且在代理向发送方发回ACK之前(在此示例中为Camel) 。并且Camel将在发送给代理后继续路由,并到达路径的末尾,并返回Jetty的响应。您可以考虑设置一些空的响应来使用,例如:

from("jetty:http://0.0.0.0:xxxx/abc")
  .to(ExchangePattern.InOnly, "activemq:queue:queue1")
  .transform().constant("OK");