1、使用Xshell连接虚拟机的会话(http://47.xxx.86.114/)
使用账号密码登录成功
2、使用docker下载rabbitMQ镜像(注意:这里选择的-management的镜像是自带了管理页面的)
docker pull rabbitmq:3-management
3、下载完成之后,开启rabbitMQ服务,即可使用
docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq fc7a5d55df34
4、如果是使用的阿里云服务器,则需要开启5672(amqp端口)和15672(管理界面的端口)端口的映射才能run成功;
5、此时可以在浏览器中测试是否开始运行,输入以下网址:
http://47.xxx.86.114:15672/
账号与密码都为guest
此时可以自己添加交换机和队列进行测试;
6、使用IDEA与RabbitMQ进行交互
创建工程,选择组件
7、查看pom.xml文件是否导入rabbitMQ组件
8、查看源码:RabbitAutoConfiguration自动配置类(可跳过);
里面自动配置了工厂连接类ConnectionFactory;
RabbitProperties封装了RabbitMQ的配置;
RabbitTemplate:给RabbitMQ发送和接收消息。
9、可自己在application.properties中配置属性
spring.rabbitmq.host=47.100.86.114
spring.rabbitmq.username=guest
spring.rabbitmq.password=guest
10、测试点对点通信
@Autowired
RabbitTemplate rabbitTemplate; //注入
/**
* 1. 单播(点对点)
*/
@Test
void contextLoads() {
Map<String,Object> map = new HashMap<>();
map.put("msg", "这是第一个消息");
map.put("data", Arrays.asList("hello", 123, true));
rabbitTemplate.convertAndSend("exchange.direct", "atguigu.news", new Book("西游记","zzz"));
}
@Test
public void receive(){
Object o = rabbitTemplate.receiveAndConvert("atguigu.news");
System.out.println(o.getClass());
System.out.println(o);
}
11、测试广播
/**
* 广播
*/
@Test
public void sendMsg(){
rabbitTemplate.convertAndSend("exchange.fanout", "", new Book("三国演义","bbb"));
}
12、@RabbitListener和@EnableRabbit ,开启基于注解的rabbitMQ模块
13、自己定义序列化配置
@Configuration
public class MyAMQPConfig {
@Bean
public MessageConverter messageConverter(){
return new Jackson2JsonMessageConverter();
}
}