Demo
1. 新增用户
2. 添加坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
3. 添加配置文件
rabbitmq:
host: 192.168.200.128
port: 5672
username: java1126
password: java1126
virtual-host: /java1126
4. 发消息
1.使用方法
// 注入
@Autowired
private RabbitTemplate rabbitTemplate;
// 发送消息,使用的方法
rabbitTemplate.convertAndSend("交换机","规则","消息内容");
rabbitTemplate.convertAndSend("product_exchange", "sku.upper", skuId + "");
rabbitTemplate.convertAndSend("product_exchange", "sku.down", skuId + "");
2. 配置交换机,队列,绑定
例如:
import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/***
* 商品管理微服务配置rabbit消息队列
*/
@Configuration
public class ProductRabbitConfig {
/**
* 创建交换机
* import org.springframework.amqp.core.*;
*/
@Bean("productExchange")
public Exchange productExchange() {
// directExchange:定向
return ExchangeBuilder.directExchange("product_exchange").build();
}
/**
* 创建上架队列
* import org.springframework.amqp.core.*;
*/
@Bean("productQueueUpper")
public Queue productQueueUpper() {
// durable:定向
return QueueBuilder.durable("product_queue_upper").build();
}
/**
* 创建下架队列
* import org.springframework.amqp.core.*;
*/
@Bean("productQueueDown")
public Queue productQueueDown() {
// durable:定向
return QueueBuilder.durable("product_queue_down").build();
}
/**
* 上架队列和交换机的绑定
* @Qualifier:import org.springframework.beans.factory.annotation.Qualifier;
* @param productExchange
* @param productQueueUpper
* @return
*/
@Bean
public Binding productUpperBinding(@Qualifier("productExchange") Exchange productExchange,
@Qualifier("productQueueUpper") Queue productQueueUpper) {
// 将队列绑定到交换机,使用"sku.upper"的规则
// noargs(build)
return BindingBuilder.bind(productQueueUpper).to(productExchange).with("sku.upper").noargs();
}
/**
* 下架队列和交换机的绑定
* Qualifier:import org.springframework.beans.factory.annotation.Qualifier;
* @param productExchange
* @param productQueueDown
* @return
*/
@Bean
public Binding productDownBinding(@Qualifier("productExchange") Exchange productExchange,
@Qualifier("productQueueDown") Queue productQueueDown) {
// 将队列绑定到交换机,使用"sku.down"的规则
// noargs(build)
return BindingBuilder.bind(productQueueDown).to(productExchange).with("sku.down").noargs();
}
}
此时启动服务测试,是否发送成功
5. 测试成功,接受消息
1. 接收端配置坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
2. 接收端配置文件
rabbitmq:
host: 192.168.200.128
port: 5672
username: java1126
password: java1126
virtual-host: /java1126
接收端微服务新建监听文件
import lombok.extern.log4j.Log4j2;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
/***
* 监听商品管理微服务上下架消费者
*/
@Component
@Log4j2
public class SkuMessageListener {
// 注明消费者
// @RabbitListener(queues = {"监听队列1,","监听队列2"})--》如下获取
/**
* 监听上架消息
*
* @param msg
*/
@RabbitListener(queues = "product_queue_upper")
public void skuUpperMessageListener(String msg) {
System.out.println("上架商品的id为:" + msg);
}
/**
* 监听下架消息
*
* @param msg
*/
@RabbitListener(queues = "product_queue_down")
public void skuDownMessageListener(String msg) {
System.out.println("下架商品的id为:" + msg);
}
}