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,而不是您在管理控制台中看到的名称