rabbitmq的简介和好处这里就不说啦,一堆巴拉巴拉,这里有个大神的链接可以了解一下
然后是我在项目里用到的rabbitmq,简单记录一下
-
安装rabbitmq
安装的详细步骤可以到这里看一下 rabbitmq安装步骤
全部安装成功之后,开始配置啦。 -
导入依赖 pom.xml
<!-- RabbitMQ -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
- 配置application.yml文件
spring:
rabbitmq: #rabbitmq 消息队列
host: localhost
port: 5672
username: root
password: root
virtual-host: /
登录rabbitmq网页端的时候,port为15672,在写配置的时候要把“1”去掉,不然会报错
这里的username和password是我新增的具有管理权限的用户,rabbitmq中两者最初默认为均为guest
- 编写rabbitmq的配置类
/**
* RabbitMQ 配置类,配置订阅发布模式
* @author ...
* @date 2019-04-29
*/
@Configuration
public class RabbitMQConfigration {
/**
* 配置队列1
* @return Queue
*/
@Bean
public Queue queue(){
return new Queue("step");
}
/**
* 配置队列2
* @return Queue
*/
@Bean
public Queue cuttingPositionQueue(){
return new Queue("cuttingPosition");
}
}
Queue,作为消息的载体,可以使每个消息被发送到队列中
- 生产者
/**
* rabbitMq 生产者
* @author ...
*/
@RestController
public class Product {
/** 日志 */
private static final Logger logger = LoggerFactory.getLogger(Product.class);
@Autowired
private AmqpTemplate rabbitTemplate;
/**
* 发送...
* @param msg
*/
public void sender(String msg){
logger.info("========================队列step 发送消息:"+msg+"==========================");
rabbitTemplate.convertAndSend("step",msg);
logger.info("======================== 队列step 发送消息成功 ==========================");
}
public void sendCuttingPosition(String msg){
logger.info("========================队列cuttingPosition 发送消息:"+msg+"==========================");
rabbitTemplate.convertAndSend("cuttingPosition",msg);
logger.info("======================== 队列cuttingPosition 发送消息成功 ==========================");
}
}
- 消费者
/**
* 接收者 测试用
*/
@Component
public class receive {
/** 日志 */
private static final Logger logger = LoggerFactory.getLogger(receive.class);
@RabbitListener(queues = "step")
@RabbitHandler
public void receive(String msg){
logger.info("stepList 接收消息:"+msg);
}
@RabbitListener(queues = "cuttingPosition")
@RabbitHandler
public void receiveCuttingPosition(String msg){
logger.info("cuttingPosition 接收消息:"+msg);
}
}
- 测试
只要在需要发送消息的时候,调用生产者内的方法即可:
/** rabbitmq */
@Autowired
private Product product;
...
// 定义消息
String position = "123456789测试rabbitmq987654321";
// 通过rabbitmq发布
product.sendCuttingPosition(position);
- 这里用的是生产者内的第二个方法,测试结果如下
完成!