消息队列中的消息撤回
1.消息队列中, 我想针对队列中待发消息做一个不发送操作, 现有的做法是 在消费者端从队列中获取到消息后, 查询数据库看这条消息的状态是否能发送, 否则就不发, 这样有一个问题是取到每条消息都要去查询一遍数据库才能决定推不推送, 有没有更优的方法
2.消息队列使用的是 阿里云 rocketMq
回答:
能否考虑将不发送的消息ID一次获取存放在临时的map
中,这样每次只需要map.constains
,减少了DB交互,但是可能会有内存方面的问题,如果这个数据量不大可以考虑这么做。
如果数据量较大,可以提前将不发送的消息放入缓存,查缓存效率相对高不少
回答:
考虑下rocketmq的事务消息呢,利用两阶段提交协议。但是感觉效率也不高
回答:
可以将撤回的消息ID存到redis中。
以上是 消息队列中的消息撤回 的全部内容, 来源链接: utcz.com/a/163614.html