消息服务的两个常见规范:JMS、AMQP
一、JMS和AMQP简介
JMS和AMQP对比:
二、rabbitmq的简介
三、rabbitmq的运行机制
Exchange的四种类型:
四、rabbitmq的整合
rabbitmq的管理界面
idea运行向导引入web、rabbitmq
1.配置
2.docker 镜像官网地址 docker hub
docker -d:表示后台运行 -p:表示暴露端口
docker run -d -p 5672:5672 -p 15672:15672 --name myrabbitmq XXX(这边对应镜像的id)
3.测试类
class BootAmpqApplicationTests {
@Autowired
private AmqpAdmin amqpAdmin;
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
void contextLoads() {
Map<String,String> map = new HashMap<>();
map.put("msg","helloworld");
map.put("username","tom");
// rabbitTemplate.convertAndSend("exchange.direct","atguigu.news",map);
rabbitTemplate.convertAndSend("exchange.direct","atguigu.news",new Book("西游记",99));
}
@Test
void receive(){
Object message = rabbitTemplate.receiveAndConvert("atguigu.news");
System.out.println(message.getClass());
System.out.println(message);
}
@Test
void createExchange(){
//创建交换器
// amqpAdmin.declareExchange(new DirectExchange("atguigutest"));
//创建队列
// amqpAdmin.declareQueue(new Queue("guigutestQueue"));
//创建绑定规则
amqpAdmin.declareBinding(new Binding("guigutestQueue",Binding.DestinationType.QUEUE,"atguigutest","guigutestQueue",null));
System.out.println("创建完成");
}
}
4.rabbitmq的 RabbitAutoConfiguration配置类源码分析(原理)
5.监听
如果开启消息监听,在启动类上加上@EnableRabbit ,然后在业务层方法体上(监听方法上)加上@@RabbitListener(queues = “atguigu.news”) ,属性queues为一个数组,可以监听多个队列