RabbitMq应用在发送短信(本文应用生产-消费模式):
首先安装mq在机器上,注册用户名和密码
短信发送分为server端和client端:
在maven中配置下载mq的依赖包
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
rabbitMQ.properties的配置
rabbit_server_username=用户名
rabbit_server_password=密码
rabbit_server_host=ip地址
rabbit_heart_beat=
client端的调用:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:rabbitMQ.properties" />
</bean>
<!-- 配置mq的连接工厂 -->
<rabbit:connection-factory id="connectionFactory" host="${rabbit_server_host}" username="${rabbit_server_username}" password="${rabbit_server_password}" requested-heartbeat="${rabbit_heart_beat}" />
<rabbit:admin connection-factory="connectionFactory"/>
<!-- 配置mq的队列 -->
<rabbit:queue id="queue名字" durable="true" auto-delete="false" exclusive="false" name="queue名字"/>
<!-- 配置mq的exchange -->
<rabbit:direct-exchange name="exchange名字" >
<rabbit:bindings>
<rabbit:binding key="queue名字" queue="queue名字"/>
</rabbit:bindings>
</rabbit:direct-exchange>
<rabbit:template exchange="exchange名字" id="amqpTemplate" queue="queue名字" connectionfactory="connectionFactory" message-converter="传递方式MessageConvertConfig"/>
然后在自己的方法中调用
public void send(){
@Autowired
private AmqpTemplate amqpTemplate;
public void sendSMS(){
amqpTemplate.convertAndSend(obj);
}
}
server端的配置和编写
在spring中配置mq
<!-- 引入配置文件 -->
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:rabbitMQ.properties" />
</bean>
<!-- 配置mq的连接工厂 -->
<rabbit:connection-factory id="connectionFactory" host="${rabbit_server_host}" username="${rabbit_server_username}" password="${rabbit_server_password}" requested-heartbeat="${rabbit_heart_beat}" />
<rabbit:admin connection-factory="connectionFactory"/>
<!-- 配置mq的队列 -->
<rabbit:queue id="queue名字" durable="true" auto-delete="false" exclusive="false" name="queue名字"/>
<!-- 配置mq的exchange -->
<rabbit:direct-exchange name="exchange名字" >
<rabbit:bindings>
<rabbit:binding key="queue名字" queue="queue名字"/>
</rabbit:bindings>
</rabbit:direct-exchange>
<!-- 配置消息队列的监听方法 -->
<bean id="实现类id" class="实现类" />
<rabbit:listener-container connection-factory="connectionFactory">
<rabbit:listener ref="实现类id" queue-names="queue名字"/>
</rabbit:listener-container>
实现类编写
public class 实现类 implements MessageListener {
@Override
public void onMessage(Message message) {
//1、MessageConvertConfig如果有加密的方法要先解密(和发送端保持一致)
//2、解析参数
//3、自己的逻辑处理。。。
//4、调用发送短信的接口(第三方)
}
}
实现MessageListener 的接口监听消息队列,当有消息发送到队列中时就会调用到服务端的onMessage方法
实现发送到队列消息
rabbitmq安装教程:http://blog.csdn.net/historyasamirror/article/details/6827870