mq上有好多个消息,如果两个系统共同使用一个mq,怎么区分mq里的消息是这两个系统中哪一个的呢,mq提供了一种方法---消息列队
首先在mq上创建一个消息列队,名字是唯一的,然后系统根据消息列队的名字----向消息列队中存数据和取数据
springboot集成ribbitMQ一般要做的事情----链接mq---创建一个标识(创建消息列队)----像消息列队中添加值-------从消息列队中取值
springboot集成rabbitmq要做的事情
1:引入jar
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2:在application.properties配置 ip、端口、用户名和密码
spring.application.name=spirng-boot-rabbitmq
spring.rabbitmq.host=192.168.146.134
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=123
3:创建一个RabbitConfig类 ,目的spring初始化时候在mq上创建一个消息列队
package com.blueskystarts.module.mq;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitConfig {
@Bean
public Queue Queue() {
return new Queue("helloMQ");//会在mq上创建一个名为helloMQ的消息列队
}
}
4:创建一个消息接收类----只要mq对应的消息列队中有消息就获取消息
package com.blueskystarts.module.mq;
import org.apache.log4j.Logger;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
@RabbitListener(queues = "helloMQ")
public class HelloReceiver {
@RabbitHandler
public void process(String message) {
System.out.println("从helloMQ获取的消息message: ==========================="+message);
}
}
上面使用的是springboot自带的获取mq的工具,只要加上对应的注解,就能获取到想要的消息列队的消息
5:写个接口发个消息测试下----springboot有个rabbitTemplate类,这个类里有方法可以向mq的消息列队中添加消息
package com.blueskystarts.module.mq.controller;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/testmq")
public class SendMQController {
@Autowired
private AmqpTemplate rabbitTemplate;
//http://127.0.0.1:8080/testmq/sendmessage
@GetMapping(value = "/sendmessage")
public String sendMessage(){
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String test = "当前时间:"+dateFormat.format(new Date());
rabbitTemplate.convertAndSend("helloMQ", test);
return "消息已经发送到helloMQ消息列队中";
}
}
6:在页面上执行接口:http://127.0.0.1:8080/testmq/sendmessage
查看eclipce控制台