会员登录|免费注册|忘记密码|管理入口 返回主站||保存桌面
RabbitMq(七) -- 常见问题:幂等性问题(消息重复消费)、消息丢失_rabbitmq重复消费问题
2024-12-01IP属地 湖北2
RabbitMq(七) -- 常见问题:幂等性问题(消息重复消费)、消息丢失_rabbitmq重复消费问题 常见问题

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

RabbitMq(七) -- 常见问题:幂等性问题(消息重复消费)、消息丢失_rabbitmq重复消费问题

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前

因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。 RabbitMq(七) -- 常见问题:幂等性问题(消息重复消费)、消息丢失_rabbitmq重复消费问题 RabbitMq(七) -- 常见问题:幂等性问题(消息重复消费)、消息丢失_rabbitmq重复消费问题 RabbitMq(七) -- 常见问题:幂等性问题(消息重复消费)、消息丢失_rabbitmq重复消费问题 RabbitMq(七) -- 常见问题:幂等性问题(消息重复消费)、消息丢失_rabbitmq重复消费问题 RabbitMq(七) -- 常见问题:幂等性问题(消息重复消费)、消息丢失_rabbitmq重复消费问题

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注大数据 RabbitMq(七) -- 常见问题:幂等性问题(消息重复消费)、消息丢失_rabbitmq重复消费问题

正文

 

* 交换机不管是否收到消息都会执行的一个回调方法 * * @param correlationData 消息相关数据 * @param ack 交换机是否收到消息 * @param cause 未收到消息的原因 */ @Override public void confirm(CorrelationData correlationData, boolean ack, String cause) { String id = correlationData != null ? correlationData.getId() : “”; if (ack) { log.info(“交换机已经收到 id 为:{}的消息”, id); } else { log.info(“交换机还未收到 id 为:{}消息,原因:{}”, id, cause); } }

 

}

 

CREATE TABLE ( varchar(50) NOT NULL COMMENT ‘消息ID’, varchar(2000) DEFAULT NULL COMMENT ‘消息内容’, PRIMARY KEY () ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

 

@Data @NoArgsConstructor @AllArgsConstructor public class MessageIdempotent extends Model {

 

}

 

@Mapper public interface MessageIdempotentMapper extends BaseMapper { }

 

@GetMapping(“/sendMessage”) public void sendMessage(String msg, String id) { MessageProperties messageProperties = new MessageProperties(); messageProperties.setMessageId(id); messageProperties.setContentType(“text/plain”); messageProperties.setContentEncoding(“utf-8”); Message message = new Message(msg.getBytes(), messageProperties); log.info(“生产消息:” + message.toString()); // 消息发送确认回调 CorrelationData correlationData = new CorrelationData(UUID.randomUUID().toString()); rabbitTemplate.convertAndSend(“DirectExchange-01”, “DirectRouting01”, message, correlationData); }

 

http://localhost:8091/shiro/revisit/sendMessage?msg=你好啊&id=1 http://localhost:8091/shiro/revisit/sendMessage?msg=&id=1

 

2023-04-10 14:31:12.859 INFO 19232 — [nio-8091-exec-1] c.y.t.r.TestRevisit.RevisitController : 生产消息:(Body:‘你好啊’ MessageProperties [headers={}, messageId=1, contentType=text/plain, contentEncoding=utf-8, contentLength=0, deliveryMode=PERSISTENT, priority=0, deliveryTag=0]) 2023-04-10 14:31:29.002 INFO 19232 — [nio-8091-exec-2] c.y.t.r.TestRevisit.RevisitController : 生产消息:(Body:‘’ MessageProperties [headers={}, messageId=1, contentType=text/plain, contentEncoding=utf-8, contentLength=0, deliveryMode=PERSISTENT, priority=0, deliveryTag=0])

 

@RabbitListener(queues = “DirectQueue-01”) public void receiveMessage02(Message message, Channel channel) throws IOException { String messageId = message.getMessageProperties().getMessageId(); String messageContent = new String(message.getBody(), StandardCharsets.UTF_8);

 

}

 

2023-04-10 14:47:06.738 INFO 25416 — [ntContainer#6-1] c.y.t.r.TestRevisit.RevisitConsumer : DirectQueue-01-消费者收到消息,消息ID:1 消息内容:你好啊 2023-04-10 14:47:06.745 INFO 25416 — [ntContainer#6-1] c.y.t.r.TestRevisit.RevisitConsumer : 消息 1 已经消费过

 

// 开启事务 channel.txSelect try { // 这里发送消息 } catch (Exception e) { channel.txRollback

// 这里再次重发这条消息

} // 提交事务 channel.txCommit

 

@Override public void confirm(CorrelationData correlationData, boolean ack, String cause) { String id = correlationData != null ? correlationData.getId() : “”; if (ack) { log.info(“交换机已经收到 id 为:{}的消息”, id); } else { log.info(“交换机还未收到 id 为:{}消息,原因:{}”, id, cause); } }

 

rabbitmqctl set_policy ha-all “^rock.wechat” ‘{“ha-mode”:“all”,“ha-sync-mode”:“automatic”}’

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据 RabbitMq(七) -- 常见问题:幂等性问题(消息重复消费)、消息丢失_rabbitmq重复消费问题

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导,让我们一起学习成长

rabbitmqctl set_policy ha-all “^rock.wechat” ‘{“ha-mode”:“all”,“ha-sync-mode”:“automatic”}’

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注大数据 [外链图片转存中…(img-9DRPR8Bv-1713320069580)]