java完美实现springboot集成rabbitmq
1、application.yml配置rabbitmq连接
# Spring??
spring:
application:
name: exchange
rabbitmq:
host: rabbitmq-test-old.catles.com
port: 5672
# addresses: 192.168.2.22:5672
username: cbms
password: cbms123456
publisher-confirms: true
publisher-returns: true
connectionTimeout: 3000ms #???????ms?0????????
listener:
simple:
default-requeue-rejected: true
retry:
initial-interval: 30000ms
enabled: true
max-attempts: 3
virtual-host: /cbms
rabbitmqService: # rabbitmq? ????????
topic:
appData: # ????????????
exchange: catl-appDataExchange-zyceshi
routingKey:
swapStatus: catl-swapStatus-zyceshi # ????
queueName:
swapStatus: catl-swapStatusQueue-zy-test-001 # ???????
2、pom.xml配置依赖
<!-- rabbitmq-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
3、rabbitmq生产者和消费者配置
生产者:
package com.example.rabbitmqdemozj.rabbit.producer;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author junliu
* @description 跟app端交互的mq消费者
* @return
* @date 2021/5/10 上午10:25
**/
@Slf4j
@RestController
@RequestMapping("/rabbit")
public class RabbitMqProducer {
@Value("${rabbitmqService.topic.appData.exchange}")
private String exchange;
@Value("${rabbitmqService.topic.appData.routingKey.swapStatus}")
private String swapStatusKey;
@Autowired
private RabbitTemplate rabbitTemplate;
/**
* @Description: 生产者消息
* @return void
* @Author zangyao
* @CreateTime 2022/6/20
*/
@GetMapping("/producerMessage")
public void producerMessage(){
for (int i = 0; i < 3; i++) {
System.out.println("发送:"+i);
rabbitTemplate.convertAndSend(exchange, swapStatusKey, JSON.toJSONString("swapStatusEntity"+i));
}
}
}
消费者:
package com.example.rabbitmqdemozj.rabbit.consumer;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.ExchangeTypes;
import org.springframework.amqp.rabbit.annotation.*;
import org.springframework.stereotype.Component;
/**
* @author junliu
* @description 跟app端交互的mq消费者
* @return
* @date 2021/5/10 上午10:25
**/
@Component
@Slf4j
public class RabbitMqConsumer {
/**
* @Description: 消费者消息A
* @return void
* @Author zangyao
* @CreateTime 2022/6/20
*/
@RabbitHandler
@RabbitListener(bindings = {
@QueueBinding(
exchange = @Exchange(value = "${rabbitmqService.topic.appData.exchange}", type = ExchangeTypes.TOPIC),
key = "${rabbitmqService.topic.appData.routingKey.swapStatus}",
value = @Queue(value = "${rabbitmqService.topic.appData.queueName.swapStatus}", autoDelete = "false", durable = "true")
)
})
public void consumerMessageA(String msg) {
System.out.println("rabbit--1:"+msg);
}
/**
* @Description: 消费者消息B
* @return void
* @Author zangyao
* @CreateTime 2022/6/20
*/
@RabbitHandler
@RabbitListener(bindings = {
@QueueBinding(
exchange = @Exchange(value = "${rabbitmqService.topic.appData.exchange}", type = ExchangeTypes.TOPIC),
key = "${rabbitmqService.topic.appData.routingKey.swapStatus}",
value = @Queue(value = "${rabbitmqService.topic.appData.queueName.swapStatus}", autoDelete = "false", durable = "true")
)
})
public void consumerMessageB(String msga) {
System.out.println("rabbit--2:"+msga);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理