2016-07-07 2 views
2

Я создал очередь с аргументами истечения сообщения, но при запуске сервера я получил следующую ошибку.SpringAMQP Создание очереди с помощью args

[SimpleAsyncTaskExecutor-1] o.s.a.r.c.RabbitAdmin [RabbitAdmin.java:375] Auto-declaring a non-durable Queue (TEST_QUEUE). It will be redeclared if the broker stops and is restarted while the connection factory is alive, but all messages will be lost. 
pool-1-thread-1] o.s.a.r.c.CachingConnectionFactory [CachingConnectionFactory.java:249] Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - inequivalent arg 'durable' for queue 'EXP_MSG' in vhost '/': received 'false' but current is 'true', class-id=50, method-id=10) 
ERROR [SimpleAsyncTaskExecutor-1] o.s.a.r.l.SimpleMessageListenerContainer [SimpleMessageListenerContainer.java:914] Failed to check/redeclare auto-delete queue(s). 
org.springframework.amqp.AmqpIOException: java.io.IOException 
    at org.springframework.amqp.rabbit.support.RabbitExceptionTranslator.convertRabbitAccessException(RabbitExceptionTranslator.java:63) ~[spring-rabbit-1.4.0.RELEASE.jar:na] 
    at org.springframework.amqp.rabbit.connection.RabbitAccessor.convertRabbitAccessException(RabbitAccessor.java:110) ~[spring-rabbit-1.4.0.RELEASE.jar:na] 

Я использую Spring boot 1.2.8 и Spring 4.2.5.

@Bean 
    Queue expiredMessageQueue() { 
     Map args = new HashMap(); 
     args.put("x-message-ttl", 60000); 
     return new Queue(expiredMessageQueue, false, false, false,args); 
    } 

ответ

2

неэквивалентный агд «прочный» для очереди «EXP_MSG» в виртуальном хосте «/»: получил «ложь», но ток «истинная»

Это означает, что уже присутствуют такой очередь на RabbitMQ Broker, но с разными свойствами.

Если вы хотите изменить его и воссоздали с помощью приложения, вы должны сначала удалить его из брокера перед запуском приложения. Или выровняйте все параметры с существующим.

Это называется как passiveDeclaration. Слушателю точно нужна реальная очередь для подписки, и есть только причина, по которой можно проверить, существует ли она в желаемом состоянии, попробуйте объявить ее во время запуска слушателя.

+0

Hi Artem, Спасибо за информацию. Он работает сейчас! – sea

 Смежные вопросы

  • Нет связанных вопросов^_^