我遇到了Camel的问题。
我正在创建像这样的动态队列
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列表
ids.append(“jms:sendRoute”+ client.getId()); 和Ids(一个字符串)放在邮件标题
中我正在使用activeMQ
我不明白行为
启动时,它会动态创建3条路线。它们被命名为:
sendRoute1 sendRoute2 sendRoute3
(这是我在管理控制台中看到的)
处理器生成的id列表是:jms:sendRoute1,jms:sendRoute2,jms:sendRoute3
我遇到的问题是,当邮件发送到多个路由时,当我放置一个断点时,我看到sendRoute1使用了第一条消息,并且有两条名为jms的新路由:sendRoute2和jms:sendRoute3添加。 邮件已发送至: - sendRoute1 - jms:sendRoute2 - jms:sendRoute3
但我在jsm上没有使用者:sendRoute2和jms:sendRoute3因此不会读取消息。
有人可以解释一下为什么会发生这种情况以及我如何解决这个问题?
此致
吉勒
当消息被多播到范围内的所有队列时