spring boot 接收第三方mq消息

文章目录


前言

mq 用的很少,简单记录一下。

需求:数据提供方采用mq的方式推送数据,我方接收数据后,入库。

一、pom

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
</dependency>

二、配置

java 复制代码
spring.rabbitmq.host=
spring.rabbitmq.port=
spring.rabbitmq.username=
spring.rabbitmq.password=
spring.rabbitmq.publisher-returns=true
spring.rabbitmq.virtual-host=virtual
spring.rabbitmq.listener.simple.acknowledge-mode=manual
spring.rabbitmq.listener.simple.concurrency=1
spring.rabbitmq.listener.simple.max-concurrency=1
spring.rabbitmq.listener.simple.retry.enabled=true
  1. spring.rabbitmq.host=
    描述:指定 RabbitMQ 服务器的主机名或 IP 地址。通常是 localhost 或者服务器的远程地址。
  2. spring.rabbitmq.port=
    描述:指定 RabbitMQ 服务器的端口号。默认情况下,RabbitMQ 使用 5672 端口。
  3. spring.rabbitmq.username=
    描述:用于连接 RabbitMQ 的用户名。RabbitMQ 需要进行身份验证,因此需要提供有效的用户名。
  4. spring.rabbitmq.password=
    描述:用于连接 RabbitMQ 的密码。与用户名配合使用进行身份验证。
  5. spring.rabbitmq.publisher-returns=true
    描述:启用消息发布确认。如果设置为 true,当发布的消息无法路由到任何队列时,将触发回调。适用于需要确保消息已正确发送的场景。
  6. spring.rabbitmq.virtual-host=virtual
    描述:指定 RabbitMQ 的虚拟主机。虚拟主机用于逻辑上的隔离,可以在同一个 RabbitMQ 实例中创建多个虚拟主机,每个虚拟主机

三、RabbitMQListener

java 复制代码
@Component
@Slf4j
@RabbitListener(queues = "test")
public class RabbitMQListener {

    @RabbitHandler
    public void onMessage(HashMap<String, Object> baseMap, Channel channel, @Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) {
        try {
            String messageType = (String) baseMap.get("messageType");
            log.info(messageType);
            // 业务同步
            // 确认已经成功处理的消息,确保 RabbitMQ 从队列中将其移除,以避免重复消费
            channel.basicAck(deliveryTag, false);
        } catch (Exception e) {
            log.info("接收消息失败,重新放回队列");
            try {
            	// 否认消息并重新入队
                channel.basicNack(deliveryTag, false, true);
            } catch (IOException ie) {
                ie.printStackTrace();
            }
        }
    }
}

总结

  1. 判断mq是否可以联通 telnet ip port

相关推荐
llz_11212 分钟前
web-第四次课后作业
前端·spring boot·web
JAVA面经实录91737 分钟前
操作系统面试题
java·服务器·数据库·计算机网络·面试
一杯奶茶¥1 小时前
基于springboot的失物招领管理系统带万字文档 校园失物招领管理系统 失物认领管理系统java springboot vue
java·vue.js·spring boot·java项目
不能只会打代码1 小时前
边缘视频分析平台的架构设计与性能优化——从750ms到190ms的调优之路
java·spring boot·redis·性能优化·边缘计算·物联网竞赛
小刘|1 小时前
Spring AI Alibaba 集成和风天气 API 实战
java·服务器·前端
KANGBboy1 小时前
java知识五(继承)
java·开发语言
AI人工智能+电脑小能手1 小时前
【大白话说Java面试题 第117题】【并发篇】第17题:线程有几种状态,之间如何转换?
java·开发语言·面试
DIY源码阁2 小时前
JavaSwing饮品管理系统 - MySQL版
java·数据库·mysql·eclipse
二哈赛车手2 小时前
新人笔记---最终版智能体图片分析完整方案,包括一些总结于经验,以及各种优化点讲解
java·笔记·spring·ai·springboot
泡^泡3 小时前
Spring AI简单高仿DeepSeek问答页面
java·人工智能·spring