Rabbit Admin出现意外行为

时间:2013-01-30 15:12:59

标签: spring spring-rabbit

我的印象是RabbitAdmin

“默认情况下会自动查找Queue,Exchange和Binding类型的bean,并代表用户向代理声明它们”

在我看来,如果我已经在代理上声明了多个队列,如果我添加一个未声明的新队列,管理员将会在声明它时出现问题,抛出: -

Code:
Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; reason: {#method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'TranslationQueue.local' in vhost '/', class-id=50, method-id=10), null, ""}

RabbitMQ xml config:

代码:

<bean id="rcf" class="com.rabbitmq.client.ConnectionFactory">
        <property name="host" value="${rabbitmq.host:localhost}"/>
        <property name="requestedHeartbeat" value="10" />
</bean>

<rabbit:connection-factory id="connectionFactory" host="${rabbitmq.host:localhost}" port="${rabbitmq.port:5672}"
        username="guest" password="guest" connection-factory="rcf" />

<rabbit:admin connection-factory="connectionFactory" />

<rabbit:queue name="TranslationQueue.${server.name:unknown}" >
        <rabbit:queue-arguments value-type="java.lang.Long">
                <entry key="x-message-ttl" value="2400000" />
        </rabbit:queue-arguments>
</rabbit:queue>

是已知问题还是某种配置错误?

1 个答案:

答案 0 :(得分:2)

已解决线程

http://forum.springsource.org/showthread.php?134488-Unexpected-behaviour-with-Rabbit-Admin

事实证明,该区域的日志记录非常弱,需要调试级别才能找到错误。

问题是代理上的ttl和另一个队列的配置之间不匹配。