rabbitmq 메시지 발송의 신뢰성 메커니즘
2. 메시지가 exchange에 전달되면 mandatory를true로 설정하여 메시지가 exchange에서queue로 전달되도록 합니다
3. exchange,queue, 메시지 지속화
4. 메시지가 소비자에게 성공적으로 처리되는지 확인하려면 소비자는 autoAck을false로 설정해야 한다(true일 경우 소비자측이 이상을 던지지 않으면ack, 소비자측이 메시지를 받고 질질 끌면 이 메시지도 성공처리로 간주된다)
상기 네 가지는 메시지가'적어도 한 번'이 배달되는 것을 확보했는데, 그 중 하나와 두 가지는 메시지 발송 중의 신뢰성에 관한 것이다
모든 rabbitTemplate는confirm-callback과return-callback만 있을 수 있습니다. 같은 프로젝트에 여러 개의 설정이 필요합니다. 만약에 어떤 메시지는 전송을 확인해야 하고, 필요하지 않으면 여러 개의amqpTemplate(rabbitTemplate)를 실례화해야 합니다.
정보: confirm-callback을 사용하려면 publisherConfirms를true로 설정해야 합니다
// broker , exchange , exchange ,broker ack。
rabbitTemplate.setConfirmCallback(new RabbitTemplate.ConfirmCallback(){
@Override
public void confirm(CorrelationData correlationData, boolean ack, String cause) {
if (ack) {
System.out.println(" ");
} else {
// (nack)
System.out.println(" ");
}
}
});
2: return-callback을 사용할 때 mandatory를true로 설정해야 하고,publisherReturns도true로 설정해야 합니다
rabbitTemplate.setMandatory(true);
// broker , exchange , exchange ,broker ack。
rabbitTemplate.setReturnCallback(new RabbitTemplate.ReturnCallback() {
@Override
public void returnedMessage(Message message, int replyCode, String replyText,
String exchange, String routingKey) {
//
RepublishMessageRecoverer recoverer = new RepublishMessageRecoverer(errorTemplate,"errorExchange", "errorRoutingKey");
Throwable cause = new Exception(new Exception("route_fail_and_republish"));
recoverer.recover(message,cause);
System.out.println("Returned Message:"+replyText);
}
});
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.