除了将msg路由到队列之外,Camel RabbitMQ还创建了一个生成的队列

时间:2016-06-28 23:38:22

标签: rabbitmq apache-camel

我有一个交换设置amq.topic,在那里我有一个指向我的密钥的路由密钥。

我有一个使用rest端点定义的路由。我用一个正文作为json {“sample”:“sample”}来调用该终点。

  rest("myendpoint")
                .post()
                .route()
                .routeId(ROUTE_ID)
                .log(ROUTE_ID + " started.")
                .convertBodyTo(String.class)
                .log("Receiving request with body=${body}")
                .to("rabbitmq://rabbiturl:port/amq.topic?connectionFactory=rabbitmqConnectionFactory&autoDelete=false&routingKey=myroutingkey&declare=false&exchangeType=topic")                
                .log(ROUTE_ID + " ended.")
                .end();

这实现了我想要的:我的休息呼叫的主体将被发送到主题交换,其将根据路由密钥进入我的队列。

问题:它还会创建一个自动生成的队列

 [                qtp86171426-28] RabbitMQProducer               INFO  Starting reply manager service RabbitMQReplyManagerTimeoutChecker[amq.topic]
[                qtp86171426-28] ReplyManagerSupport            INFO  Using temporary queue name: amq.gen-JGF0CKioQ6_MLA9uBNIOOQ
[                qtp86171426-28] CorrelationTimeoutMap          INFO  in putIfAbsent with key Camel-ID-L-VC-10050-58983-1467158153454-0-3
[nagerTimeoutChecker[amq.topic]] TemporaryQueueReplyHandler     INFO  in onTimeout with correlationId= Camel-ID-L-VC-10050-58983-1467158153454-0-3
[nagerTimeoutChecker[amq.topic]] ReplyManagerSupport            WARN  Timeout occurred after 20000 millis waiting for reply message with correlationID [Camel-ID-L-VC-10050-58983-1467158153454-0-3] on destination amq.gen-JGF0CKioQ6_MLA9uBNIOOQ. Setting ExchangeTimedOutException on (MessageId: ID-L-VC-10050-58983-1467158153454-0-2 on ExchangeId: ID-L-VC-10050-58983-1467158153454-0-1) and continue routing.

我尝试过skipqueuedeclare& skipexchangedeclare并且我已经没有了解它为什么生成队列的想法。有没有人有任何想法?

1 个答案:

答案 0 :(得分:1)

将ExchangePattern设置为InOnly。

临时和回复队列是因为路由需要回复,因此创建临时队列以等待响应。

因此,如果您的休息端点没有返回任何内容,则在休息调用时将ExchangePattern设置为Inonly,它应该没问题。或者将其设置为.to()。