关于延迟队列实现(delay queue)

首先经常有人问,KAFKA有实现消息队列延迟消费的功能吗?

答案是否定的。但是,我们可以通过一些方法变通一下,也是可以实现延迟消费。

第一种:

如果你消费时间不是太复杂,甚至是固定的,那么你可以在producer端根据不同的延迟消费逻辑把不同的消息放到对应的topic里面,然后consumer就可以不顾producer端,直接根据不同的延迟逻辑去消费对应的topic。

第二种:

由于消息队列的作用从根本上为了解决并发消息的爆发引起的问题,所以利用KAFKA 进行有效的队列保存,那么我们就利用他这个机制,使用一个RDBMS(比如MYSQL)进行统一消费,然后客户再统一对RDBMS库进行条件扫描,比如每5秒扫描一次,获取对应的延迟消息进行消费处理。

当然如果你的架构确实需要这么一个有延迟队列的功能,那么建议使用其他MQ系统。比如RabbitMQ(参考:https://blog.csdn.net/dh554112075/article/details/90597649 )

关于rabbitMQ,他最简单的方法就是使用一个插件来实现(rabbitmq-delayed-message-exchange)https://github.com/rabbitmq/rabbitmq-delayed-message-exchange

但是这个有一点要注意的地方,使用插件时发送到队列的消息数量在web管理界面不可见,但不影响正常功能使用。因为这个插件目前还是处于实验性阶段,虽然也能用于生产,但需要自己清楚他的使用范围是否合适你。

引用开发者的话:This plugin is considered to be experimental yet fairly stable and potential suitable for production use as long as the user is aware of its limitations.

意思是:这个插件被认为是实验性的,但相当稳定,只要用户意识到它的局限性,它就有潜力适合生产使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值