RabbitMQ部署与使用
部署
单机部署
在Centos7虚拟机中使用Docker来安装
方式一:在线拉取
docker pull rabbitmq:3.8-management
方式二:从本地加载
上传到虚拟机中后,使用命令加载镜像即可:
docker load -i mq.tar
安装MQ
执行下面的命令来运行MQ容器:
docker run \
-e RABBITMQ_DEFAULT_USER=itcast \
-e RABBITMQ_DEFAULT_PASS=123321 \
-v mq-plugins:/plugins \
--name mq \
--hostname mq \
-p 15672:15672 \
-p 5672:5672 \
-d \
rabbitmq:3.8-management
SpringAMQP
SpringAMQP是基于RabbitMQ封装的一套模板,并且还利用SpringBoot对其实现了自动装配,使用起来非常方便。
SpringAmqp的官方地址
SpringAMQP提供了三个功能:
- 自动声明队列、交换机及其绑定关系
- 基于注解的监听器模式,异步接收消息
- 封装了RabbitTemplate工具,用于发送消息
使用前提(导入依赖和配置MQ地址)
父工程中引入依赖:
<!--AMQP依赖,包含RabbitMQ-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
在消息发送和消息接收服务的application.yml中添加配置:
spring:
rabbitmq:
host: 192.168.41.130 # 主机名
port: 5672 # 端口
virtual-host: / # 虚拟主机
username: itniuma # 用户名
password: 000000 # 密码
Basic Queue 简单队列模型
消息发送
消息发送服务publisher中编写测试类SpringAmqpTest,并利用RabbitTemplate实现消息发送:
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringAmqpTest {
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
public void testSimpleQueue() {
// 队列名称
String queueName = "itniuma.queue";
// 消息
String message = "hello,basic!";
// 发送消息
rabbitTemplate.convertAndSend(queueName, message); //发送方法(队列名,消息)
}
}
消息接收
消息接收consumer中新建一个类SpringRabb