RabbitMQ作为消息队列,可以采用异步的方式将消息放入到消息队列中等待处理。减轻了服务器的压力,并在一定程度上保证了服务的稳定性,健壮性。
对于RabbitMQ的介绍,可以看一下我之前的整理文章,例如:https://mp.csdn.net/postedit/80221725
在优惠券项目中,是采用spring对项目进行管理的。我将以操作日志的写入做例子,分享一下消息队列是如何实现的。优惠券项目是博主在git上趴下来的项目,本博客的分析具体见:https://mp.csdn.net/postedit/80191083
1,定义消息队列和它的routingKey rabbitmq-server.properties
#操作日志相关属性
rabbit.actionLog.queue=spring.actionLog.queue
rabbit.actionLog.routingKey=spring.actionLog.queueKey
2,在配置文件中定义通过spring 注入的方式 将属性配置引入,消息队列定义,exchange定义。绑定定义。spring-rabbitmq-share.xml
<context:property-placeholder location="/rabbitmq-server.properties" ignore-unresolvable="true"/>
<rabbit:connection-factory id="connectionFactory" host="${rabbit.hosts}"
port="${rabbit.port}" username="${rabbit.username}" password="${rabbit.password}" virtual-host="${rabbit.virtualHost}"
channel-cache-size="50"/>
<rabbit:admin connection-factory="connectionFactory"/>
<!--操作日志-->
<rabbit:queue id="spring.actionLog.queue" durable="true" auto-delete="true" exclusive="false" name="${rabbit.actionLog.queue}"/>
<rabbit:direct-exchange name="${rabbit.exchange.direct}" durable="true" auto-delete="false" id="${rabbit.exchange.direct}">
<rabbit:bindings>
<rabbit:binding queue="spring.actionLog.queue" key="${rabbit.a