amqp端点是否有类似“浏览”选项的内容(有关详细信息,请参阅2.4.3.3. browse部分)?
答案 0 :(得分:1)
有一个“浏览”组件。 to("browse:dummy")
,但这只能浏览已通过此路由的邮件。在某些情况下很方便,但不是真正的JMS浏览选项。
你可以做的是使用BrowsableEndpoint
进行JMS浏览(也应该使用AMQP,因为它基于JMS客户端,但是没有尝试过)。
您无法真正接收消息而不能删除它,因此您需要其他东西来触发您的浏览。例如计时器或触发器队列。
from("amqp:queue:trigger")
.process(new Processor(){
@Override
public void process(Exchange arg0) throws Exception {
BrowsableEndpoint browse = arg0.getContext().getEndpoint("amqp:queue:archive", BrowsableEndpoint.class);
List<Exchange> exchanges = browse.getExchanges();
System.out.println("Browsing queue: "+ browse.getEndpointUri() + " size: " + exchanges.size());
for (Exchange exchange : exchanges) {
String payload = exchange.getIn().getBody(String.class);
String msgId = exchange.getIn().getHeader("JMSMessageID", String.class);
System.out.println(msgId + "=" +payload);
}
}
});
您可以执行预先路由以获得此触发器。
from("amqp:queue:processQueue")
.to("amqp:queue:archive")
.transform().constant("trigger msg")
.to("amqp:queue:trigger");
答案 1 :(得分:1)
我最终想出来了,我只是认为该选项应该存在于驼峰组件选项级别,即在连接字符串形式为例如“?mode = browse”,但该选项实际上是在amqp连接级别上设置的 - “my-queue; {mode:browse}”。您可以设置驼峰组件选项,添加“?option = value”。
P.S。在amqp连接级别上设置选项适用于偶数驱动(默认驼峰)路由,但对于轮询驱动的路由不起作用,请参阅https://issues.apache.org/jira/browse/CAMEL-6784了解详细信息。
答案 2 :(得分:0)
是。在AMQP 0-10中,message.subscribe上有一个获取模式选项,如果设置tonot-acquired导致浏览订阅。在AMQP 1.0中,通过在建立订户时为源指定“复制”的分发模式来实现相同的目的。链接。
但是,假设您正在通过JMS客户端访问AMQP,那么正如Petter上面所说,您应该能够使用我想象的JMS定义的浏览工具(我对骆驼不太熟悉,知道这是怎么回事完成)。