Apache camel Camel JMS recipientList转到错误队列
我对骆驼有意见 我正在创建这样的动态队列Apache camel Camel JMS recipientList转到错误队列,apache-camel,jms,multicast,Apache Camel,Jms,Multicast,我对骆驼有意见 我正在创建这样的动态队列 for (Client client : clients) { // Get the ids String clientId = client.getId(); String queueId = "jms:sendRoute" + clientId; // Generate the queues from(queueId) .ro
for (Client client : clients) {
// Get the ids
String clientId = client.getId();
String queueId = "jms:sendRoute" + clientId;
// Generate the queues
from(queueId)
.routeId(queueId)
.errorHandler(defaultErrorHandler().maximumRedeliveries(-1).redeliveryDelay(1000 * 60 * 5)) // Retries indefinitively
.transacted()
.process(new MyProcessor(clientId, clientService))
.to("mock:end");
}
这条初始路径称为
from("direct:availabilityRoute")
.routeId("availabilityRoute")
.unmarshal(bindy)
.split(body())
.process(new AProcessor(controler))
.split(body())
.process(new DBProcessor(controler))
.process(new RoutesProcessor(controler))
.recipientList(header("clientIds"), ",")
.to("mock:end");
路由处理器生成消息多播到的队列ID列表
append(“jms:sendRoute”+client.getId());
ID(一个字符串)放在消息头中
我正在使用activeMQ
我不明白这种行为
启动时,它会动态创建3条路由。他们的名字是:
发送路线1
发送路线2
发送路线3
(这是我在管理控制台中看到的)
处理器生成的ID列表是:jms:sendRoute1、jms:sendRoute2、jms:sendRoute3
我遇到的问题是,当消息被发送到多个路由时,当我放置断点时,我看到第一条消息被sendRoute1使用,并且添加了两个名为jms:sendRoute2和jms:sendRoute3的新路由。
该消息已发送至:
-发送路线1
-jms:sendRoute2
-jms:sendRoute3
但是我在jsm:sendRoute2和jms:sendRoute3上没有使用者,所以消息不会被读取
有人能解释一下为什么会发生这种情况,以及我如何解决这个问题吗
问候
吉尔斯
当消息被多播到作用域中的所有队列时您说的是ids.append(“jms:sendRoute”+client.getId());ID(一个字符串)被放在消息头中,您能解释一下您在哪里以及如何做到这一点吗?您没有附加“,”如您所说,处理器生成的ID列表是:jms:sendRoute1、jms:sendRoute2、jms:sendRoute3。您是否记录了header返回的值(“clientId”),另一件需要检查的事情是,您的路由名称必须是jms:sendRoute1、jms:sendRoute2、jms:sendRoute3,而不是您在管理控制台中看到的名称