ToB企服应用市场:ToB评测及商务社交产业平台

标题: RabbitMQ常见题目办理方案 [打印本页]

作者: 莫张周刘王    时间: 2024-8-9 14:09
标题: RabbitMQ常见题目办理方案
RabbitMQ常见题目办理方案

消息丢失题目

     生产者丢失消息


对于上面两种情况,我们可以使用异步的监听操作机制来防备
   ①乐成/未乐成发送到交换机可以触发一个confirm-type监听
  ②交换机发送到队列会有一个publisher-returns监听
  在pom文件中引入依赖项后进行设置文件的编写
  1. rabbitmq:
  2.     publisher-returns: true
  3.     publisher-confirm-type: correlated
  4. #新版本 publisher-confirms: true 已过时
复制代码
  编写设置类
  1. @Configuration
  2. @Slf4j
  3. public class RabbitMQConfig {
  4.    
  5.     @Autowired
  6.     private RabbitTemplate rabbitTemplate;
  7.     @PostConstruct
  8.     public void enableConfirmCallback() {
  9.    
  10.         //confirm 监听,当消息成功发到交换机 ack = true,没有发送到交换机 ack = false
  11.         //correlationData 可在发送时指定消息唯一 id
  12.         rabbitTemplate.setConfirmCallback(
  13.             (correlationData, ack, cause) -> {
  14.    
  15.             if(!ack){
  16.    
  17.                 //记录日志、发送邮件通知、落库定时任务扫描重发
  18.             }
  19.         });
  20.         
  21.         //当消息成功发送到交换机没有路由到队列触发此监听
  22.         rabbitTemplate.setReturnsCallback(returned -> {
  23.    
  24.             //记录日志、发送邮件通知、落库定时任务扫描重发
  25.         });
  26.     }
  27. }
复制代码
  tips:
  对于实际开发中,一般不这样使用,由于丢失的概率很低,成本又很高,一般都采用日志/邮件记载,手动维护
  真的极其罕见的是生产者弄丢消息,那么开发往数据库补数据就行了。
  RabbitMQ弄丢消息


   办理方法就是设置长期化消息写出磁盘,这样子可以确保RabbitMQ宕机重启后队列和消息不会丢失
  长期化操作:

   交换机长期化
  1. @RabbitListener(
  2.         bindings = @QueueBinding(
  3.                 value = @Queue(
  4.                     value =
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4