怎么做阿里巴巴国际网站,wordpress后台能修改模板文件,什么网站做问卷好,百度站长平台网站改版工具消息发送系统 项目中的一种做法,简化总结如下
1.对外暴露接口1,供业务方调用 2.接口2的实现就是同步发送各种消息,比如发短信,发微信等,但不保证 3.对外暴露接口2,供业务方调用 4.接口2内部实现,也是发送消息,但是是通过mq解耦的 4.1.业务方调用接口2后,接口2的实现将会发送一…消息发送系统 项目中的一种做法,简化总结如下
1.对外暴露接口1,供业务方调用 2.接口2的实现就是同步发送各种消息,比如发短信,发微信等,但不保证 3.对外暴露接口2,供业务方调用 4.接口2内部实现,也是发送消息,但是是通过mq解耦的 4.1.业务方调用接口2后,接口2的实现将会发送一个topic; 4.2.发送短信系统,消费这个topic,发送短信 4.3.发送微信的系统,消费这个topic,发送微信的系统 4.4.等等其他系统,都消费这个topic,可扩展
问题1:发送消息,要防重,一条消息不能重复发两次,因为接口1和接口2都是发短信,很可能业务方会同时调用 在2.2的地方,加入redis防重,每条消息都给一个唯一id,发送前就在redis记录一下状态,正在发送,发送完成后改状态为发送成功 每次发送前都会判断redis中是否有这个记录,有就不发了,没有就加锁记录后再发送,发送成功后解锁
问题2:消息很多的时候,mq重试会造成更多的挤压,所以这个mq将会关闭重试机制,那么万一发送失败又没有重试,要怎么办呢? 引入延迟mq,在发送业务mq的同时,再发一条延迟mq,在业务完成后的一定时间内再回去检查,保证这条消息不会丢失