AMQP实现之RabbitMQ

版权声明:本文为博主原创文章,未经博主允许请使劲转载。 https://blog.csdn.net/zenmin2015/article/details/86561421

JMS&AMQP的简介

 


RabbitMQ运行机制

direct:点对点    交换机根据路由键发送消息

fanout:交换机给每个队列发送消息

topic:给指定规则的队列发送消息  #匹配一个或多个单词  *匹配一个单词

Exchange(分发策略)  -->  绑定Queue  --> 绑定规则

 

点对点

广播模式:


SpringBoot&AMQP 使用

1、在SpringBoot启动类上面标注
@EnableRabbit	//开启基于注解的rabbitmq
2、监听消息队列
@RabbitListener(queues="zm.news")	//监听消息队列
方法入参默认是一个RabbitMQ的Message类型 

AMQP的新建操作
@Test
publicvoidcreateExchange(){
//新建交换器//名称//是否持久化//是否自动删除
admin.declareExchange(newDirectExchange("amqp.exchange",true,false));
System.out.println("amqp.exchange");

//新建队列
Strings=admin.declareQueue(newQueue("admin.queue"));
System.out.println(s);

//绑定队列到交换器上
admin.declareBinding(newBinding("admin.queue",Binding.DestinationType.QUEUE,"amqp.exchange","admin.qqq",null));
}

AMQP消息发送的操作
/**
*1、点对点
*/
@Test
publicvoidsend(){
//rabbitTemplate.send(交换机,路由键,消息体);

//消息体可以直接传入对象将会自动序列化
//rabbitTemplate.convertAndSend(交换机,路由键,消息体);

HashMap<Object,Object>objectObjectHashMap=newHashMap<>();
objectObjectHashMap.put("name","zm");
objectObjectHashMap.put("list",Arrays.asList("1","2","3","4"));
Bookbook=newBook();
book.setId("1");
book.setName("书名1");
book.setPrice("12.3");
//对象被默认序列化
rabbitTemplate.convertAndSend("amqp.exchange","admin.qqq",book);
}

/*
*给exchange.fanout交换机下所有队列发送消息
*/
@Test
publicvoidsendAll(){
Bookbook=newBook();
book.setId("1");
book.setName("书名1");
book.setPrice("12.3");
//对象被默认序列化
rabbitTemplate.convertAndSend("exchange.fanout","zm.news",book);
}
/*
*给exchange.Topic交换机下所有队列根据规则发送消息
*/
@Test
publicvoidsendByTopic(){
Bookbook=newBook();
book.setId("1");
book.setName("书名1");
book.setPrice("12.3");
//对象被默认序列化
rabbitTemplate.convertAndSend("exchange.topic","xxx.news",book);
}



猜你喜欢

转载自blog.csdn.net/zenmin2015/article/details/86561421