您的位置:首页 > 编程语言 > Java开发

Spring集成RabbitMQ

2017-01-10 14:19 197 查看
1、所需jar包(maven 依赖)

<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>1.6.3.RELEASE</version>
</dependency>


2、spring 的xml中配置RabbitMQ

<!--配置connection-factory,指定连接rabbit server参数 -->
<rabbit:connection-factory id="connectionFactory"
username="${RabbitMQ.username}" password="${RabbitMQ.password}" host="${RabbitMQ.host}" port="${RabbitMQ.port}" />

<!--声明多个消息队列 queue -->
<rabbit:queue id="queue1" name="queue1" durable="true" auto-delete="false" exclusive="false" />
<rabbit:queue id="queue2" name="queue2" durable="true" auto-delete="false" exclusive="false" />
<rabbit:queue id="queue3" name="queue3" durable="true" auto-delete="false" exclusive="false" />

<!--定义rabbit template用于数据的接收和发送 -->
<rabbit:template id="amqpTemplate"  connection-factory="connectionFactory"
exchange="exchangeTest" />

<!--通过指定下面的admin信息,当前producer中的exchange和queue会在rabbitmq服务器上自动生成 -->
<rabbit:admin connection-factory="connectionFactory" />

<!-- 消息接收者 -->
<bean id="messageReceiver" class="com.jpxcw.rabbitmq.MessageConsumer"></bean>

<!-- queue litener  观察 监听模式 当有消息到达时会通知监听在对应的队列上的监听对象-->
<rabbit:listener-container connection-factory="connectionFactory">
<rabbit:listener queues="queue1,queue2,queue3" ref="messageReceiver"/>
</rabbit:listener-container>

<!-- 定义direct exchange,绑定queue -->
<rabbit:direct-exchange name="exchangeTest" durable="true" auto-delete="false">
<rabbit:bindings>
<rabbit:binding queue="queue1" key="queueTestKey1"></rabbit:binding>
<rabbit:binding queue="queue2" key="queueTestKey2"></rabbit:binding>
<rabbit:binding queue="queue3" key="queueTestKey3"></rabbit:binding>
</rabbit:bindings>
</rabbit:direct-exchange>


3、生产者

import javax.annotation.Resource;

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.stereotype.Service;

@Service
public class MessageProducer {

@Resource
private AmqpTemplate amqpTemplate;

public void sendMessage(String queueKey,Object message){
amqpTemplate.convertAndSend(queueKey,message);
}

}


4、消费者

import org.springframework.amqp.core.Message;
import org.springframework.amqp.core.MessageListener;

public class MessageConsumer implements MessageListener{

@Override
public void onMessage(Message message) {
System.out.println(message);
}

}


5、接口测试

@RestController
public class Controller {

@Autowired
private MessageProducer mqProducer;

final String queue_key = "queueTestKey1";

@RequestMapping(value="/rbmq", method = RequestMethod.GET)
public void send(){
String mq="spring and rabmp!";
mqProducer.sendMessage(queue_key,mq);
}

}


6、结果输出

(Body:'spring and rabmp!' MessageProperties [headers={}, timestamp=null, messageId=null, userId=null, receivedUserId=null, appId=null, clusterId=null, type=null, correlationId=null, correlationIdString=null, replyTo=null, contentType=text/plain, contentEncoding=UTF-8, contentLength=0, deliveryMode=null, receivedDeliveryMode=PERSISTENT, expiration=null, priority=0, redelivered=false, receivedExchange=exchangeTest, receivedRoutingKey=queueTestKey1, receivedDelay=null, deliveryTag=3, messageCount=0, consumerTag=amq.ctag-OS16HeTstwO8mkfq9XnC8Q, consumerQueue=queue1])
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  spring RabbitMQ