四畳半神话大系

Spring Cloud 疑难杂症(7): Rabbitmq 只允许一个 callback

在一个微服务下,只能允许一个 confirm callback 和一个 return callback
所以需要抽象出公共配置

1
2
3
4
5
6
7
8
9
10
11
12
13
@Slf4j
@Component
public class RabbitSendConfirmCallBack implements RabbitTemplate.ConfirmCallback {
@Override
public void confirm(CorrelationData correlationData, boolean ack, String cause) {
if (ack) {
log.error("├ [Rabbitmq 发送] 确认成功cause" + cause);
} else {
//处理丢失的消息
log.error("├ [Rabbitmq 发送] 确认失败:" + correlationData.getId() + "#cause" + cause);
}
}
}
1
2
3
4
5
6
7
8
9
10
11
@Slf4j
@Component
public class RabbitSendReturnCallback implements RabbitTemplate.ReturnCallback {
@Override
public void returnedMessage(Message message, int replyCode, String replyText,
String exchange, String routingKey) {
log.error("├ [Rabbitmq 发送] 确认后回调return--message:"+new String(message.getBody())+",replyCode:"+replyCode+"," +
"replyText:"
+replyText+",exchange:"+exchange+",routingKey:"+routingKey);
}
}

在生产者中设置

1
2
this.rabbitTemplate.setReturnCallback(rabbitSendReturnCallback);
this.rabbitTemplate.setConfirmCallback(rabbitSendConfirmCallBack);

专题:

本文发表于 2020-04-04,最后修改于 2020-04-04。

本站永久域名blog.amoyiki.com,也可搜索「 四畳半神话大系 」找到我。

期待关注我的 ,查看最近的文章和动态。


上一篇 « Spring Cloud 疑难杂症(6): OpenJDK 字体库缺失 下一篇 » 友情链接

推荐阅读

Big Image