0

제 시스템에서는 이벤트를 보내고 받기 위해 spring-cloud-stream과 RabbitMQ를 사용합니다. 내 토끼 메신저를 실행 서비스 대답 최대 및 서비스 B 다운 있어요. 서비스 A서비스 B으로 이벤트를 보냅니다. 그런 다음 내 서비스 B을 표시하고 이제는 Rabbit이 이벤트를 속일 것이라고 기대하지만 아무런 반응이 없습니다. 올바른 행동입니까? 나는 RabbitMQ가 처음이지만 모든 이벤트가 결국 수신기를 찾도록 보장해야한다. 내 응용 프로그램은 추가 구성없이 example on github을 기반으로 간단합니다. 나는 무엇을 놓치나요?서비스가 다시 시작되면 Rabbitmq에서 메시지를 알리지 않습니다.

+1

'spring-cloud-stream'에 대해서는 잘 모르지만 RabbitMQ 관점에서 볼 때 - 제작자가이 메시지를 라우팅 할 수있는'대기열이 없습니다 '라는 메시지를 보내면 메시지가 삭제됩니다 . 나는 여러분이 RabbitMQ와 그 관리 API에 대해 조금 읽는 것을 제안한다.이 API는 거기에 대기열이 있는지 그리고 메시지가 어떻게되는지를 확인할 수있게 해준다. RabbitMQ는 메시지가 수신기, 수신기 및 생산자와 소비자가 올바르게 통신 할 수 있는지를 보장하지 않습니다. –

+1

대기열은 익명으로, 소비자 그룹을 구성하지 않으면 자동 삭제됩니다. 새로운 소비자는 새로운 메시지를받습니다. 내 대답을 보라. –

답변

1

소비자가 group이없는 경우 대기열은 익명의 자동 삭제 대기열입니다. 지속성을 위해 그룹이 필요합니다. consumer groups을 참조하십시오.

생산자는 대기열을 Exchange에 바인딩하지 않으므로 소비자가 수행합니다.

새 소비자 그룹보다 먼저 제작자를 바인딩하면 메시지도 손실됩니다.

RabbitMQ 바인더를 사용하면 미리 소비자 그룹을 알고있는 경우 ...producer.requiredGroups 속성을 설정할 수 있으며 대기열이 바인딩됩니다.

the documentation을 참조하십시오.

requiredGroups

가 생성 된 후가 시작하더라도 제조자가 메시지 전송을 보장해야하는기로 쉼표로 구분 (예 :로 RabbitMQ 내구성 큐 중고 만드는).