현재 rabbit-amqp 구현 프로젝트에서 작업 중이며 spring-rabbit을 사용하여 프로그래밍 방식으로 모든 대기열, 바인딩 및 교환을 설정합니다.큐를 복구 한 후 바인딩 재 선언
나는 그것을 삭제 된 경우 큐를 다시 시도하고 참조 문서에 다음을 발견 해요 : 처리를위한 개선의 숫자를 도입
3.14 리스너 컨테이너 대기열
버전 1.3 리스너 컨테이너의 여러 대기열
컨테이너는 하나 이상의 대기열에서 수신 대기하도록 구성되어야합니다. 이것은 이전에도 마찬가지 였지만 이제는 런타임에 큐를 추가하고 제거 할 수 있습니다. 컨테이너는 미리 가져온 메시지가 처리 될 때 소비자에게을 재활용 (취소 및 다시 생성)합니다. addQueues, addQueueNames, removeQueues 및 removeQueueNames 메서드를 참조하십시오. 대기열을 제거 할 때 하나 이상의 대기열이 남아 있어야합니다.
대기열 중 하나가 사용 가능하면 소비자가 시작됩니다. 이전에는 대기열을 사용할 수 없으면 컨테이너가 중지됩니다. 이제 대기열이없는 경우에만 해당됩니다. 모든 대기열을 사용할 수없는 경우 컨테이너는 누락 된 대기열을 60 초마다 수동으로 선언하고 소비합니다. ... :
내가이 시나리오를 시도하고 실제로 내 대기 행렬이 재현 (소스 http://docs.spring.io/spring-amqp/docs/1.3.4.RELEASE/reference/html이 글을 쓰는 시간 동안 다운 된)하지만, 큐와 교류 사이의 바인딩이 손실됩니다. 큐를 삭제 한 후 바인딩을 사용하여 대기열을 다시 만들려면 어떻게합니까?
하지만 대기열에 autoDelete가 있어야합니다. 내가 알기로는 이것은 소비자가 대기열에 연결되어 있지 않으면 자동으로 삭제되고 대기열에있는 모든 메시지가 삭제된다는 것을 의미합니다. 큐의 x-expires 인수를 사용하여이 작업을 수행 할 수도 있습니까? – JustinV
Answer –
'x-expires' 인자를 검사하는 것만으로는 충분하지 않다는 것을 명심하십시오; 큐는 [서버 측 정책] (http://www.rabbitmq.com/ttl.html)을 사용할 때 만료 될 수 있습니다. 어쩌면 각 소비자가 시작될 때 항상 재 선언해야합니다. 즉, 이는 컨테이너가 적어도 만료 시간 동안 중지 된 상태로 응용 프로그램 컨텍스트가 실행되는 드문 경우입니다. 컨텍스트가 초기화 될 때 관리자가 대기열을 선언합니다. 유스 케이스를 설명 할 수 있습니까? –