延时任务的实现方法

延时任务的实现方法一、Java延迟队列实现该方案是利用 JDK 自带的 DelayQueue 来实现,这是一个无界阻塞队列,该队列只有在延迟期满的时候才能从中获取元素,放入 DelayQueue 中的对象,是必须实现 Delayed 接口的。DelayedQueue 实现工作流程如下图所示其中Poll():获取并移除队列的超时元素,没有则返回空take():获取并移除队列的超时元素,如果没有则 w

- 阅读全文 -

RabbitMQ的死信队列和延时队列

RabbitMQ的死信队列和延时队列1. 死信队列&死信交换器:DLX 全称(Dead-Letter-Exchange),称之为死信交换器,当消息变成一个死信之后,如果这个消息所在的队列存在x-dead-letter-exchange参数,那么它会被发送到x-dead-letter-exchange对应值的交换器上,这个交换器就称之为死信交换器,与这个死信交换器绑定的队列就是死信队列。说实在的,死

- 阅读全文 -

将Bean放入Spring容器中的一些方式

将Bean放入Spring容器中的一些方式我们知道平时在开发中使用Spring的时候,都是将对象交由Spring去管理,那么将一个对象加入到Spring容器中,有哪些方式呢,下面我就来总结一下1、@Configuration + @Bean这种方式其实,在上一篇文章已经介绍过了,也是我们最常用的一种方式,@Configuration用来声明一个配置类,然后使用 @Bean 注解,用于声明一个bea

- 阅读全文 -

mongodb 设置自动删除过期数据

mongodb 设置自动删除过期数据MongoDB的集合有衣蛾 TTL (即 time to live,即生存的时间) 的特性。TTL可以让mongodb自动移除过期了的数据,(咦,这岂不是正好符合日志类的数据诉求)。这种机制便比较适合一些 日志数据 机器产生的事件数据 甚至可以用来做 session会话 。MongoDB 通过一个 TTL 索引来实现这种所谓的 TTL 集合。该特性的实现机制是:

- 阅读全文 -

线程池之ThreadPool与ForkJoinPool

一、 ThreadPool Executor一个线程池包括以下四个基本组成部分:1、线程池管理器(ThreadPool):用于创建并管理线程池,包括 创建线程池,销毁线程池,添加新任务;2、工作线程(PoolWorker):线程池中线程,在没有任务时处于等待状态,可以循环的执行任务;3、任务接口(Task):每个任务必须实现的接口,以供工作线程调度任务的执行,它主要规定了任务的入口,任务执行完后的

- 阅读全文 -