采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
周老师: 假如RMQ集群突然宕机了(虽然高可用,但也可能全部宕机),消息会阻塞吗?消息多久丢弃,会等待多久?假如1秒钟消息就丢弃的话,这回引起宕机这段时间内,消息丢失,您工作中遇到过吗,怎么解决,需不需要,捕获异常落表,例如当RMQ连接不上异常时,将这条消息落库,然后等回复之后,再把宕机这段时间的消息,发出去?
而对于已经刷盘的消息,mq恢复后,是可以实现自动投递的。 在rmq的控制台,你甚至可以手动操作,人工投递。 这些特性建议看一下课上那个 rmq开发者指南哈 这样知识才会比较系统。 课程主要探讨的还是spring cloud stream编程模型,并不是rmq本身哈。
server端宕机恢复后,数据依然在的哈。 除非宕机瞬间,某条消息还没来得及刷入磁盘,消息才可能丢失。这种场景正常不会考虑的。 就和redis不考虑如果崩溃,数据还没来得及刷入磁盘一样。解决方案也是类似,可以缩短刷盘的间隔,一定程度上降低风险,不过带来的是性能开销。我个人认为正常业务这种极端场景不去考虑即可。 另外,不管你用事务消息,还是同步发送,都不会存在以上问题,因为消息没刷盘,就宕机的话,这条消息发送到mq不会成功,会报异常。 异步消息会有上面的问题,不过我认为都是可以容忍的。 其实,各大mq都有类似问题。
假如生产上有一个联机服务,注册之后,发送优惠券,发送优惠券,是调用MQ操作,目前要求,发送优惠券逻辑,不能影响注册,这样的话,假如RMQ集群突然宕机了(虽然高可用,但也可能全部宕机),消息会阻塞吗?消息多久丢弃,会等待多久?假如1秒钟消息就丢弃的话,这回引起宕机这段时间内,消息丢失,您工作中遇到过吗,怎么解决,需不需要,捕获异常落表,例如当RMQ连接不上异常时,将这条消息落库,然后等回复之后,再把宕机这段时间的消息,发出去?
消息会阻塞吗?看你消息是怎么发送的;如果是异步发送,那可能丢失;如果是同步发送,那消息不会丢失,原因上面详细说了; 消息会阻塞吗?也是看你的发送方式,如果是异步发送,不会阻塞,如果是同步发送,会超时,然后报异常。 消息不会丢弃,会存储起来。如果哪一款MQ直接丢弃消息,这样的MQ你敢用吗? 消息丢失上面详细说了。
登录后可查看更多问答,登录/注册
面向未来微服务:熟练掌握Spring Cloud Alibaba
529 4
1.9k 1
2.6k 2
1.6k 3
3.6k 13