spring+rabbitmq的简单实现和延迟队列实现

最近项目开发中遇到两个问题,第一个是:订单创建后,5分钟没有付款,则取消订单。第二个是:每天晚上跑spring的定时任务,更新用户的访问次数。由于用户量多,用户访问记录表庞大且是分表,所以更新起来非常耗时,于是决定使用队列解决这两个问题。
使用rabbitmq,设置延时(需额外的插件),可以实现第一个问题。代码中我只需将用户信息取出,然后塞到队列中,由消费者慢慢消化队列,可以缓解第二个问题,下面,我们步入正题。
首先,我们创建一个消息生产者。消息生产者,顾名思义,就是产生消息的bean。我们需要在代码中生成自己需要的信息,可能是多个,以参数的形式,一个一个传递给消息生产者,然后消息生产者将消息一个一个放入队(quque),通过路由器(exchange)再转发给消费者。队列中的信息会一个一个传给消费者,只有消费者处理完这个信息,队列中的下一个信息才会继续传入。

生产者:
import java.io.IOException;
import javax.annotation.Resource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.stereotype.Service;

@Service  
public 

你可能感兴趣的:(spring)