1. 认识消息队列
1.1 Provider
消息生产者, 就是投递消息的程序。
1.2 Consumer
消息消费者, 就是接受消息的程序。
1.3 队列
1)队列就像存放了商品的仓库或者商店, 是生产商品的工厂和购买商品的用户之间的中转站
2)在 rabbitMQ 中, 信息流从你的应用程序出发, 来到 Rabbitmq 的队列, 所有信息可以只存储在一个队列中。 队列可以存储很多信息, 因为它基本上是一个无限制的缓冲区, 前提是你的机器有足够的存储空间
3)多个生产者可以将消息发送到同一个队列中, 多个消息者也可以只从同一个队列接收数据。
2. 编写rabbitMQ入门案例
2.1 环境搭建
2.1.1 坐标引入
<!-- rabbitMQ -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2.1.2 在全局配置文件添加rabbitMQ相关配置
## 配置项目名称(非必须配置)
spring.application.name=springcloud-mq
## 配置mq服务器地址
spring.rabbitmq.host=192.168.25.130
## 配置端口号 注意:rabbitMQ的web监控端口是15672
spring.rabbitmq.port=5672
## 配置用户名
spring.rabbitmq.username=oldlu
## 配置密码
spring.rabbitmq.password=123456
2.2 编写入门代码
2.2.1 编写mq配置类
package com.bjc.conf;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 创建消息队列
*
*/
@Configuration
public class QuenueConfig {
/**创建队列
* @return
*/
@Bean
public Queue createQuenue() {
return new Queue("hello-RabbiMq-Queue");
}
}
2.2.2 编写生产者类
package com.bjc.producer;
import javax.annotation.Resource;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.stereotype.Component;
/**
* 消息发送者
*
*/
@Component
public class Sender {
@Resource
private AmqpTemplate rabbitTemplate;
public void sendMsg(String msg) {
// 向消息队列发送消息
// 参数一:队列名称
// 参数二:消息内容
rabbitTemplate.convertAndSend("hello-RabbiMq-Queue", msg);
}
}
2.2.3 消息接收者
package com.bjc.consumer;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class Receiver {
/**接收消息的方法,采用消息队列的事件监听机制
* @param msg
*/
@RabbitListener(queues = {"hello-RabbiMq-Queue"})
public void consumer(String msg) {
System.out.println("消息接收:" + msg);
}
}
2.2.4 编写测试类
package com.bjc;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.bjc.producer.Sender;
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest
public class TestMq {
@Resource
private Sender sender;
@Test
public void test() {
sender.sendMsg("你好MQ!");
}
}
运行结果:
在看管理台,如图: