一,rabbitmq与springboot的整合
第一步:引入相关的pom依赖
<!-- RabbitMq的依赖 -->
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.7.2</version>
</dependency>
<!-- RabbitMq和springboot的整合包 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>2.1.3.RELEASE</version>
</dependency>
第二步:编写yml文件
spring:
application:
name: zt-frank-mq-prod-service-9501
#Mq相关配置
rabbitmq:
host: localhost #mq的主机地址
port: 5672 #amqp的端口
username: ems #用户名
password: 123 #密码
virtual-host: /ems #mq的v-host虚拟主机
因为rabbitMq天生就和spring很是匹配,所以整合起来相当方便
二,helloworld模型的基本的使用(Queue——简单队列 )
2.7版本支持模式:
Queue——简单队列
Work queue——Work模式
Publish/Subscribe——发布/订阅者模式
Routing——路由模式
Topics——通配符模式
RPC,远程调用,并不算一种队列模式
第一步:准备两个springboot的项目并将mq整合好
消息生产者:zt-frank-mq-prod-service-9501
消息消费者:zt-frank-mq-consumer-service-9505
第二步:生产者9501代码的编写,通过自动注入rabbitTemplate就可以直接调用方法发送消息
```java
/**
* MQ:helleworld模式的生产方
*/
@Controller
@RequestMapping("/mq")
public class HelloWorldTemplate_1 {
private static Logger logger = Logger.getLogger(HelloWorldTemplate_1.class);
@Autowired
private RabbitTemplate rabbitTemplate;
@PostMapping("/helloworld")
@ResponseBody
public String test(){
logger.info("mq开始生成消息-helloworld模式");
/**
* 生产者发送消息:\
* 当前模式下的消息发送模式是一对一的模式是没有经过exchange的直接由生产者给队列发消息,
* 说如果hello这个队列没有消费者,
* 下面这行代码无论运行多少次,都是不会消息产生的,更不会创建队列,
* 换言之hello这个队列,不是在生产这这里创建的,而是在消费者哪里创建的
*/
rabbitTemplate.convertAndSend("hello","hello world");
logger.info("mq生成消息结束-helloworld模式");
return "OK";
}
}
第三步:消费方9505代码的编写
/**
* MQ:helleworld模式的消费方
*/
@Component
//queuesToDeclare:没有队列就新建队列
@RabbitListener(queuesToDeclare = @Queue("hello"))
/**
* value:队列名称
* durable:是否持久化
* autoDelete:是否自动删除
* exclusive:是否独占 true:独占(只允许当前的连接可用) false:不独占其他服务可以用
*/
//@RabbitListener(queuesToDeclare = @Queue(value = "hello",durable = "false",autoDelete = "false"))
public class HelloWorldTemplateListener_1 {
private static Logger logger = Logger.getLogger(HelloWorldTemplateListener_1.class);
@Autowired
private RabbitTemplate rabbitTemplate;
//指定消费方的回调方法
@RabbitHandler
public void helloWorldModel(String message){
logger.info("mq开始消费消息-helloworld模式");
System.out.println("MQ消费消息:"+message);
logger.info("mq消费消息结束-helloworld模式");
}
}
三,测试;
postmen调用生产者9501服务,测试OK