Camel JMS recipientList转到错误的队列

时间:2017-04-29 14:39:36

标签: apache-camel jms multicast

我遇到了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因此不会读取消息。

有人可以解释一下为什么会发生这种情况以及我如何解决这个问题?

此致

吉勒

当消息被多播到范围内的所有队列时

0 个答案:

没有答案