一、docker安装mq
docker run \
-e RABBITMQ_DEFAULT_USER=islunatic\
-e RABBITMQ_DEFAULT_PASS=islunatic \
-v mq-plugins:/plugins \
--name mq \
--hostname mq \
-p 15672:15672 \
-p 5672:5672 \
--network fitzone-net\
-d \
rabbitmq
进入服务器 打开15672和5672端口 如果无法访问 运行以下代码
#进入容器
docker exec -it myrabbitmq bash
#安装插件
rabbitmq-plugins enable rabbitmq_management
二、项目配置mq
spring:
rabbitmq:
host: islunatic.icu # 你的虚拟机IP
port: 5672 # 端口
virtual-host: / # 虚拟主机
username: islunatic # 用户名
password: islunatic # 密码
三、使用mq
1、首先在启动类上开启任务调度
2、生产者
java
//注入rabbitmq
@Autowired
private RabbitTemplate rabbitTemplate;
//发送消息
rabbitTemplate.convertAndSend("amq.topic","pay.success",orders.getNumber);
3、消费者
java
@Component
@RequiredArgsConstructor
public class PayListener {
private final OrdersService ordersService;
@RabbitListener(bindings = @QueueBinding(
value = @Queue(name = "order.pay.queue", durable = "true"),
exchange = @Exchange(name = "amq.topic", type = ExchangeTypes.TOPIC),
key = "pay.success"
))
public void listenPaySuccess(Long orderId){
ordersService.markOrderPaySuccess(orderId);
}
}