消息队列中的消息撤回

新手上路,请多包涵

1.消息队列中, 我想针对队列中待发消息做一个不发送操作, 现有的做法是 在消费者端从队列中获取到消息后, 查询数据库看这条消息的状态是否能发送, 否则就不发, 这样有一个问题是取到每条消息都要去查询一遍数据库才能决定推不推送, 有没有更优的方法
2.消息队列使用的是 阿里云 rocketMq

阅读 5.3k
3 个回答

能否考虑将不发送的消息ID一次获取存放在临时的map中,这样每次只需要map.constains,减少了DB交互,但是可能会有内存方面的问题,如果这个数据量不大可以考虑这么做。
如果数据量较大,可以提前将不发送的消息放入缓存,查缓存效率相对高不少

考虑下rocketmq的事务消息呢,利用两阶段提交协议。但是感觉效率也不高

可以将撤回的消息ID存到redis中。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题