最新文章

Rabbitmq延迟队列实现

Rabbitmq延迟队列实现

工作中很多场景需要用到定时任务、延迟任务,常用的方法用crontab job、Spring的Quartz,然后扫描整张数据库表,判断哪些数据需要处理。控制的粒度没办法做到特定数据上。 后来就想到了Rabbitmq,Rabbitmq本来不没有延迟队列的功能,但是有个[Dead Letter Exchange](https://www.rabbitmq.com/dlx.html)功能。 DLX是指队列中的消息在下面几种情况下会变为死信(dead letter),然后会被发布到另一个exchange中。 在requeue=false的情况系,消息被client reject 消息过期 队列长度超过限制 有了DLX,就可以将需要延迟的操作设置下次执行时间(如消息的TTL时间)放入一个存储队列中,消息过期后会经由DLX进入监听的队列中。有消费方进行相关的操作,结束或者再次进入存储队列中。 Spring AMQP实现 Configuration: <rabbit:connection-factory id="rabbitMQConnectionFactory" requested-heartbeat="" host="${rabbit.host}" port="${rabbit.port}" username="${rabbit.username}" password="${rabbit.password}" publisher-confirms="true" channel-cache-size="10"/> <rabbit:admin connection-factory="rabbitMQConnectionFactory"/> <!--声明延时队列--> <rabbit:queue id="delayQueue" name="${rabbit.tracking.no.pre.track.delay.queue}"> <rabbit:queue-arguments> <entry key="x-dead-letter-exchange" value="tracking_dead_exchange"/> </rabbit:queue-arguments> </rabbit:queue> <!--声明监听队列--> <rabbit:queue id="preTrackingQueue" name="${rabbit.tracking.no.pre.track.queue}"/> <!

关于SLF4J

关于SLF4J

Spring的功能越来越强大,同时也越来越臃肿。比如想快速搭建一个基于Spring的项目,解决依赖问题非常耗时。Spring的项目模板的出现就解决了这个问题,通过这个描述文件,可以快速的找到你所需要的模板。 第一次认识SLF4J就是在这些项 …

About Me

张晓辉

英文名 Addo。 资深程序员,LF APAC 开源布道师,CNCF Ambassador,云原生社区管委会成员,公众号“云原生指北”作者,微软 Azure MVP。 曾任职于汇丰软件、唯品会、数人云、小鹏汽车,有多年的微服务和基础架构实践经验,主要工作涉及微服务、容 …

进一步了解