2013-01-03 3 views
3

RabbitMQ Admin (v3)에서 오류 대기열에 바인드 된 라우팅 키 "MyErrorRoutingKey"를 사용하여 기본 교환에 전달되지 않은 문자 메시지를 보내는 대기열을 만들려고했습니다. 관리 인터페이스에서 "데드 레터 교환"을 비워 둡니다. 이 큐 만들려고 할 때 다음과 같은 메시지가 정상적인 경우RabbitMQ, dead letters exchanges -> 메시지를 기본 교환기로 라우트 할 수 없습니까?

난 그냥 궁금 :

406 PRECONDITION_FAILED - 유효하지 않은 인수를 큐 ''죽은 자의 라우팅 키를 X '이 MyQueue '가상 호스트에'/ ':

더 문서가 있다고 때문에 기본 교환 경로 죽은 문자 메시지에 가능한 것을 routing_key_but_no_dlx_defined :

데드 - 레터 대기 행렬을 형성 할 수 있습니다. 예를 들어 은 데드 - 레터 라우팅 키를 지정하지 않고 큐 데드 - 레터 메시지를 기본값 으로 교환 할 때 발생할 수 있습니다. 이러한 순환 (즉 동일한 대기열에 두 번 도달하는 메시지)은 의 메시지가 으로 삭제됩니다.

어떻게 메시지를 기본 교환기로 라우팅해야합니까? 위에 설명 된 "순환 쓸데없는 데드 레터"와 달리 내 메시지가 손실되지 않도록 라우팅 키를 지정할 수 있어야합니다.

답변

2

routing_key_but_no_dlx_defined와 같은 소리는 데드 레터 교환을 정의하지 않으면 데드 레터 라우팅 키를 정의하면 안되며, 이는 일종의 의미가 있습니다.

난 당신이 기본 Exchange와 함께 할 노력하고 정확히 모르겠어요,하지만 너무 어쩌면 당신은 그냥 또한 데드 - 레터 교환 설정할 수있는 이름이 ...

당신에 대해서 워드 프로세서에서 마지막 인용은 당신이 설정을 사용하여 사이클이있는 경우 데드 - 레터를 교환한다는 것을 의미, 즉 :

QUEUE-A > DEAD-LETTER-QUEUE > QUEUE-A

... 그것은 큐-A를하기가 나뭇잎 경우 돌아 오는대로 RabbitMQ 메시지를 삭제합니다 시간 초과로 인해 DEAD-LETTER-QUEUE가 발생했습니다. 지연된 재시도가 원하는 경우 현재 메시지를 수동으로 DEAD-LETTER-QUEUE에 수동으로 대기시켜야하지만, RabbitMQ가 나중에 (http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2013-April/026489.html)와 같은주기를 가질 수 있다는 표시가 있습니다.

0

오래된 질문이지만 아무도 대답하지 않은 것처럼 보입니다.

웹 UI를 사용하여 정확히 동일한 오류가 발생했지만 수동으로 "x-dead-letter-exchange"및 "x-dead-letter-routing-key"를 수동으로 설정하여 문제를 해결할 수있었습니다 제공된 필드를 사용하는 대신 사용자 지정 인수로 사용하십시오.

enter image description here