RabbitMQ-未找到停止Spring服务器的队列

时间:2019-02-11 12:52:05

标签: java spring rabbitmq

我有一个spring应用程序,它正在使用来自Rabbitmq的消息。 但是,当RabbitMQ服务器关闭时,spring服务器无法启动。

下面是例外,

Caused by: com.rabbitmq.client.ShutdownSignalException: connection error; protocol method: #method<connection.close>(reply-code=530, reply-text=NOT_ALLOWED - vhost test_queue not found, class-id=10, method-id=40)
        at com.rabbitmq.utility.ValueOrException.getValue(ValueOrException.java:66) ~[amqp-client-4.0.1.jar:4.0.1]
        at com.rabbitmq.utility.BlockingValueOrException.uninterruptibleGetValue(BlockingValueOrException.java:32) ~[amqp-client-4.0.1.jar:4.0.1]
        at com.rabbitmq.client.impl.AMQChannel$BlockingRpcContinuation.getReply(AMQChannel.java:366) ~[amqp-client-4.0.1.jar:4.0.1]
        at com.rabbitmq.client.impl.AMQChannel.privateRpc(AMQChannel.java:229) ~[amqp-client-4.0.1.jar:4.0.1]
        at com.rabbitmq.client.impl.AMQChannel.exnWrappingRpc(AMQChannel.java:117) ~[amqp-client-4.0.1.jar:4.0.1]
        at com.rabbitmq.client.impl.AMQConnection.start(AMQConnection.java:381) ~[amqp-client-4.0.1.jar:4.0.1]
        at com.rabbitmq.client.impl.recovery.RecoveryAwareAMQConnectionFactory.newConnection(RecoveryAwareAMQConnectionFactory.java:62) ~[amqp-client-4.0.1.jar:4.0.1]

即使没有找到队列,仍然有办法让spring应用程序启动吗?

Spring配置。

<rabbit:connection-factory id="connectionFactory" host="${host}" port="${port}" username="${rabbitmq.username}" password="${rabbitmq.password}" virtual-host="${rabbitmq.virtualhost}"/>

    <rabbit:queue name="${rabbitmq.create.queue}" />


    <rabbit:template queue="${rabbitmq.feedback.queue}"
    exchange="${rabbitmq.feedback.exchange}" id="amqpTemplate"
    connection-factory="connectionFactory" />

    <bean id="xyzConsumerListener" class="com.sample.rabbitmq.listener.XyzConsumerListener">
    </bean>

    <rabbit:listener-container id="myListenerContainer" connection-factory="connectionFactory">
        <rabbit:listener ref="xyzConsumerListener" queue-names="${rabbitmq.create.queue}"/>
    </rabbit:listener-container>

关于, 法汉

1 个答案:

答案 0 :(得分:1)

错误消息指出无法找到名为test_queue的虚拟主机。

请检查虚拟主机是否存在,或使用/作为虚拟主机。

在这种情况下,如果没有找到虚拟主机,我认为应用程序不会启动。此外,如果已将RMQ配置为不允许立即使用提供的凭据创建队列,则它也可能彻底失败,因为这是无法恢复的情况。