0
:오류 응용 프로그램 시작에 가상 호스트에서 어떤 큐 I이 구성 클래스로 구성 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 관리 인터페이스를 통해 큐를 생성하면 오류가 발생하지 않습니다.
이 큐를 자동으로 만드는 방법이 있습니까?이 오류가 발생하지 않습니까?