使用RabbitMQ的手动接收模式:消息第二次入队Failed to declare queue

news2024/12/23 17:43:53

问题:在rabbitMQ测试使用手动接收模式时发生 Failed to declare queue错误

: Channel shutdown: channel error; protocol method: #method<channel.close>(reply-code=406, reply-text=PRECONDITION_FAILED - unknown delivery tag 1, class-id=60, method-id=80)
: Received a frame on an unknown channel, ignoring it
: Received a frame on an unknown channel, ignoring it
: Received a frame on an unknown channel, ignoring it
: Restarting Consumer@2cd2c8fe: tags=[[amq.ctag-RQecbmbYQjunIZtW-ENloQ]], channel=Cached Rabbit Channel: AMQChannel(amqp://guest@IP:5672/,1), conn: Proxy@1b9ea3e3 Shared Rabbit Connection: SimpleConnection@42257bdd [delegate=amqp://guest@IP:5672/], acknowledgeMode=AUTO local queue size=0
: Failed to declare queue: csnz_queue
: Queue declaration failed; retries left=3

org.springframework.amqp.rabbit.listener.BlockingQueueConsumer$DeclarationException: Failed to declare queue(s):[csnz_queue]
at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.attemptPassiveDeclarations(BlockingQueueConsumer.java:710) [spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.passiveDeclarations(BlockingQueueConsumer.java:594) [spring-rabbit-2.1.5.RELEASE.jar:2.1.5.RELEASE]
at org.springframework.amqp.rabbit.listener.BlockingQueueConsumer.start(BlockingQueueConsumer.java:581) [spring-rabbit-2.1

现象:

监听器第一次重入队成功,第二次试图重入队发生错误

原因

设置的接收模式有问题

解决步骤:

1、排查问题:是什么导致了队列消息丢失?
2、检查代码
3、更改接收模式配置代码
4、重新测试
5、总结,吸取教训

一、排查问题:是什么导致了队列消息丢失?

最开始报错异常为:Channel shutdown,Failed to declare queue
但是检查了一遍逻辑代码,确认没问题,开始怀疑是不是配置的手动接收模式代码错了

二、检查代码

# 配置RabbitMQ 的基本信息 IP 端口 username pass
spring:
  rabbitmq:
    host: 
    port: 5672
    username: guest
    password: guest
    virtual-host: /
    listener:
      direct:
        acknowledge-mode: manual

明明没错啊,acknowledge-mode 就是为 manual,还是idea自动提示补全的呢!

看看别人怎么写这块的

listener.simple.acknowledge-mode = manual

不是吧,居然是 simpl.acknowledge-mode

三、更改接收模式配置代码

# 配置RabbitMQ 的基本信息 IP 端口 username pass
spring:
  rabbitmq:
    host: 
    port: 5672
    username: guest
    password: guest
    virtual-host: /
    listener:
      simple:
        acknowledge-mode: manual

四、重新测试

还真tm好了
在这里插入图片描述

五、总结,吸取教训

那么 listener.simple.acknowledge-mode 和 listener.direct.acknowledge-mode 究竟有什么区别呢?

搜罗到的信息:
spring.rabbitmq.listener.direct.acknowledge-mode= # 确认容器的模式
spring.rabbitmq.listener.simple.acknowledge-mode= # 确认容器的模式

目前看来 两个应该都是可以用的,只是它和交换机的类型应该有关联。

而且在debug的过程中,我也发现了导入的《spring-boot-starter-amqp》默认使用的是Simple类型

在这里插入图片描述

要使用 direct的话应该要换掉交换机的配置,目前就先用着simple吧…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/446901.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++ 命名空间、域、缺省参数、函数重载、引用、auto、内联函数的知识点+完整思维导图+基本练习题+深入细节+通俗易懂建议收藏

绪论 从本章开始我们正式进入到C的内容&#xff0c;对此如果没有学习过C语言的建议先将C语言系统的学习一遍后再来&#xff08;已经更新完在专栏就能看到&#xff09;。 话不多说安全带系好&#xff0c;发车啦&#xff08;建议电脑观看&#xff09;。 附&#xff1a;红色&#…

Linux运维基础

一.vim编辑器 1.编辑器介绍 vi/vim是visual interface的简称,是Linux中最经典的文本编辑器&#xff0c;同图形化界面中的文本编辑器一样&#xff0c;vi是命令行下对文本文件进行编辑的绝佳选择&#xff0c;粗暴理解相当于windows下的记事本。 vim是vi的加强版本,兼容vi的所有…

java版UWB人员定位系统源码,提供位置实时显示、历史轨迹回放、电子围栏、行为分析、智能巡检等功能

运用UWB定位技术开发的人员定位系统源码 文末获取联系&#xff01; 本套系统运用UWB定位技术&#xff0c;开发的高精度人员定位系统&#xff0c;通过独特的射频处理&#xff0c;配合先进的位置算法&#xff0c;可以有效计算复杂环境下的人员与物品的活动信息。 提供位置实时显…

SLAM论文速递【SLAM—— DynaSLAM:动态场景中的跟踪、建图和修复—4.19(1)

论文信息 题目&#xff1a; DynaSLAM:Tracking,Mapping and Inpainting in Dynamic Scenes DynaSLAM:动态场景中的跟踪、映射和修复论文地址&#xff1a; https://arxiv.org/pdf/1806.05620.pdf发表期刊&#xff1a; IEEE Robotics and Automation Letters ( Volume: 3, Issu…

RPC一文精通

基础&#xff1a; http是基于应用层协议&#xff0c;对请求和响应进行规范包装,一次http请求就会进行一次tcp连接和断开连接&#xff0c;属于短链接 udp是异步响应&#xff0c;无需建立连接&#xff0c;就可以发送封装的IP数据包 tcp是基于传输层协议&#xff0c;并规范了三…

Python单向循环链表操作

目录 一、单向循环链表 单向循环链表图 二、单向循环链表的操作 1、判断链表是否为空 2&#xff0c;链表长度 3&#xff0c;遍历整个链表 4&#xff0c;在链表头部添加元素 5、链表尾部添加元素 6&#xff0c;在指定位置插入元素 7&#xff0c;修改指定位置的元素 8&a…

JavaSE 和 Java EE 分别是什么

Java 作为最流行的编程语言受到了许多人的喜爱&#xff0c;其在编程中的地位自不必多说。 对于许多才刚刚入门 Java 的朋友来讲&#xff0c;常常会产生这样的困惑&#xff0c;JavaEE是什么&#xff1f;JavaSE又是什么&#xff1f; Java SE Java SE 是 Java Platform, Standa…

Liunx下进程间通信

文章目录 前言1.进程间通信相关介绍2.管道1.匿名管道2.管道的原理3.通过代码来演示匿名管道4.命名管道5.命名管道的原理6.命名管道代码演示 3.System V共享内存1.共享内存原理2.相关系统接口的介绍与共享内存的代码演示3.共享内存的一些特性 4.system V消息队列与system V信号量…

依赖注入方式

Spring中有哪些注入方式? 我们先来思考 向一个类中传递数据的方式有几种? 普通方法(set方法)构造方法 依赖注入描述了在容器中建立bean与bean之间的依赖关系的过程&#xff0c;如果bean运行需要的是数字或 字符串呢? 引用类型简单类型(基本数据类型与String) Spring就…

Primo Ramdisk内存盘工具软件

简介 Primo Ramdisk 软件的主要功能是通过独特的软件算法将物理内存模拟成一个超快速的硬盘&#xff0c;在这个虚拟硬盘上的读写操作均在内存中完成。由于物理内存的访问速度远远超过物理硬盘&#xff0c;因此虚拟硬盘具有非常高的数据读写速度&#xff0c;从而突破系统IO瓶颈&…

“SCSA-T学习导图+”系列:下一代防火墙

本期引言&#xff1a; 近年来&#xff0c;随着数字化业务带给我们高效和便捷的同时&#xff0c;信息暴露面的增加、网络边界的模糊化以及黑客攻击的产业化&#xff0c;使得网络安全事件相较以往成指数级增加。传统防火墙基于五元组的方式对进出网络的数据流量进行访问控制&…

医院影像图像科室工作站PACS系统 DICOM 三维图像后处理与重建

PACS报告系统的主要任务是通过运用不断积累诊断常用语&#xff0c;减轻出报告的劳动强度&#xff0c;并且将报告保存成电子文档以便日后查阅。在PACS的报告系统中&#xff0c;有三种不同层次的方法输入文字—“高级模板”、“分类词条”和“短语词典”。这三种方法的内容都可以…

记一次从JS到内网的横向案例

前言 前段时间参加了一场攻防演练&#xff0c;使用常规漏洞尝试未果后&#xff0c;想到不少师傅分享过从JS中寻找突破的文章&#xff0c;于是硬着头皮刚起了JS&#xff0c;最终打开了内网入口获取了靶标权限和个人信息。在此分享一下过程。 声明&#xff1a;本次演练中&#xf…

C/C++每日一练(20230422)

目录 1. 存在重复元素 &#x1f31f; 2. 组合总和 &#x1f31f;&#x1f31f; 3. 给表达式添加运算符 &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日…

java基于J2EE的学生宿舍信息管理系统

本目 录 摘 要 I ABSTRACT II 第一章 绪论 1 1.1课题研究背景 1 1.2课题的目的和意义 1 1.3开发工具及简介 2 1.3.1开发工具 2 1.3.2 JSP技术 3 1.3.3 JavaScript 4 第二章 需求分析 4 2.1可行性分析 4 2.1.1技术的可行性 4 2.1.2经济的…

Faster RCNN系列1——Anchor生成过程

Faster RCNN系列&#xff1a; Faster RCNN系列1——Anchor生成过程 Faster RCNN系列2——RPN的真值与预测值概述 Faster RCNN系列3——RPN的真值详解与损失值计算 Faster RCNN系列4——生成Proposal与RoI Faster RCNN系列5——RoI Pooling与全连接层 一、RPN模块概述 RPN模块…

jsp946+java物流信息管理平台-sqlserver

本系统是一个独立的系统&#xff0c;用来解决物流信息信息的管理问题。采用JSP技术构建了一个有效而且实用的物流信息信息管理平台&#xff0c;目的是为高效地完成对物流信息信息的管理。 1、内部办公功能&#xff1a;包含工作计划、通告管理、公文管理&#xff1b; 包括可以…

手机录音误删怎么恢复?恢复录音,就这么简单!

案例&#xff1a;手机录音删除了还能恢复吗&#xff1f; 【友友们&#xff0c;苹果手机录音删除了还可以恢复吗&#xff1f;里面有一些关于会议记录的录音&#xff0c;不小心被我删了&#xff0c;有哪些方法可以快速恢复录音文件&#xff1f;】 如果您在使用iPhone手机录音时误…

Python小姿势 - ### Python之禅

Python之禅 Python之禅&#xff08;The Zen of Python&#xff09;是Python之父Guido van Rossum所著的一篇文章&#xff0c;总结了Python语言的哲学。 文章开头写道&#xff1a; Beautiful is better than ugly. Explicit is better than implicit. Simple is better than com…

代码随想录--字符串--反转字符串题型

反转字符串 不能给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 我们直接用双指针&#xff0c;一个指头一个指尾&#xff0c;swap交换&#xff0c;然后同时往中间走一步再进入循环交换即可。 反转字符串II 这道题我们容…