2017-11-14 5 views
0

上のバーチャルホストでノーキュー私はRabbitMQのは、この構成のクラスで構成された春のブートアプリケーションを起動しようとしている:エラーアプリケーションの起動時

@Configuration 
public class RabbitConfig implements RabbitListenerConfigurer { 

    public static final String AMQP_EXCHANGE_NAME = "test-queue"; 

    @Bean 
    public Exchange accessExchange() { 
     return new DirectExchange(AMQP_EXCHANGE_NAME); 
    } 

    @Bean 
    public Binding binding(Queue queue, DirectExchange exchange) { 
     return BindingBuilder.bind(queue).to(exchange).with(AMQP_EXCHANGE_NAME); 
    } 

    @Bean 
    public Jackson2JsonMessageConverter producerJackson2MessageConverter() { 
     return new Jackson2JsonMessageConverter(); 
    } 

    @Bean 
    public MappingJackson2MessageConverter consumerJackson2MessageConverter() { 
     return new MappingJackson2MessageConverter(); 
    } 

    @Bean 
    public RabbitTemplate rabbitTemplate(final ConnectionFactory connectionFactory) { 
     final RabbitTemplate rabbitTemplate = new RabbitTemplate(connectionFactory); 
     rabbitTemplate.setMessageConverter(producerJackson2MessageConverter()); 
     return rabbitTemplate; 
    } 

    @Bean 
    public DefaultMessageHandlerMethodFactory messageHandlerMethodFactory() { 
     DefaultMessageHandlerMethodFactory factory = new DefaultMessageHandlerMethodFactory(); 
     factory.setMessageConverter(consumerJackson2MessageConverter()); 
     return factory; 
    } 

    @Override 
    public void configureRabbitListeners(RabbitListenerEndpointRegistrar registrar) { 
     registrar.setMessageHandlerMethodFactory(messageHandlerMethodFactory()); 
    } 

をしかし、私はエラーno queue 'test-queue' in vhost '/'を取得しています:

Caused by: com.rabbitmq.client.ShutdownSignalException: channel error; protocol method: #method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'test-queue' in vhost '/', class-id=50, method-id=10) 
    at com.rabbitmq.client.impl.ChannelN.asyncShutdown(ChannelN.java:509) ~[amqp-client-4.2.0.jar:4.2.0] 
    at com.rabbitmq.client.impl.ChannelN.processAsync(ChannelN.java:340) ~[amqp-client-4.2.0.jar:4.2.0] 
    at com.rabbitmq.client.impl.AMQChannel.handleCompleteInboundCommand(AMQChannel.java:162) ~[amqp-client-4.2.0.jar:4.2.0] 
    at com.rabbitmq.client.impl.AMQChannel.handleFrame(AMQChannel.java:109) ~[amqp-client-4.2.0.jar:4.2.0] 
    at com.rabbitmq.client.impl.AMQConnection.readFrame(AMQConnection.java:643) ~[amqp-client-4.2.0.jar:4.2.0] 
    at com.rabbitmq.client.impl.AMQConnection.access$300(AMQConnection.java:47) ~[amqp-client-4.2.0.jar:4.2.0] 
    at com.rabbitmq.client.impl.AMQConnection$MainLoop.run(AMQConnection.java:581) ~[amqp-client-4.2.0.jar:4.2.0] 
    ... 1 common frames omitted 

この問題は、私は以下のリスナーが定義されている場合に発生します。

@Transactional 
    @RabbitListener(queues = RabbitConfig.AMQP_EXCHANGE_NAME) 
    public void doSomething(TestDTO dto) { 
     ... 
    } 

私はキューから消費しようとしているようだが、キューは作成されていない。 RabbitMQ管理インタフェースを使用してキューを作成すると、エラーは発生しません。

このキューを自動的に作成する方法はありますか?このエラーは発生しませんか?

答えて

0

Queue beanを表示していません。また、構成にRabbitAdminがないようです(キュー、交換、バインディングの自動宣言に必要です)。

Configuring the Brokerを参照してください。

関連する問題