我的路线定义为
from("jetty:http://0.0.0.0:xxxx/abc").to("activemq:queue:queue1").setExchangePattern(ExchangePattern.InOnly);
我知道这条路由会向代理丢弃一个meessage,并且不会等待消息使用者消耗它。我想了解ExchangePattern.InOnly对经纪人接受消息的影响。我在代理上启用了持久性。上述路由是否确保在交换完成之前保留它。
答案 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");