RabbitMQ 工作队列模式 Work Queue Demo

news2024/11/15 12:41:01

工作队列模式,一个消息只能有一个消费者消费

 生产者发送20条消息

消费者有两个

第一个消费

睡一秒取一个

第二个睡2秒取

 

public class WorkConsumerTest1 {
    public static void main(String[] args) throws IOException, TimeoutException {
        //1 创建连接工厂
        ConnectionFactory connectionFactory=new ConnectionFactory();
        //2 设置rabbitmq  ip地址
        connectionFactory.setHost("localhost");
        //3 创建连接对象   Conection对象
        Connection connection=connectionFactory.newConnection();
        //4 创建管道  Chanel
        Channel channel=connection.createChannel();
        //5 设置队列属性
        /**
         * 第一个参数:队列的名称
         * 第二个参数:队列是否要持久化
         * 第三个参数:是否排他性(是否在同一个Connection,如果设置为true,不同的Connection是获得不到消息的)
         * 第四个参数:是否自动删除消息
         * 第五个参数:是否要设置一些额外的参数
         */
        channel.queueDeclare("02-work",false,false,true,null);
        //channel.basicQos(1);
        //6 使用chanel 去 rabbitmq 获取消息进行消费
        /**
         * 第一个参数:队列的名称
         * 第二个参数:是否自动签收
         * 第三个参数:消息属性
         * 第四个参数:消息内容
         */
        channel.basicConsume("02-work", false,new DeliverCallback(){
            /**
             * 当消息从mq 中取出来了会回调这个方法
             * 消费者消费消息就在这个  handle中进行处理
             */
            @Override
            public void handle(String s, Delivery delivery) throws IOException {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                System.out.println("消息中的内容为:"+new String(delivery.getBody()));
                //channel.basicAck(delivery.getEnvelope().getDeliveryTag(),false);
            }
        },new CancelCallback(){
            /**
             * 当消息取消了会回调这个方法
             */
            @Override
            public void handle(String s) throws IOException {
                System.out.println(111);
            }
        });
        //7 关闭消息   注意消费者 需要持续监听,不要关闭
        //channel.close();
        //connection.close();
    }
}

手动签收的好处:比如说你自动签收了,消息中间件上删除了,结果执行逻辑出错了

手动签收好处就是当出现异常 ,有余地可以再次执行

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

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

相关文章

「华熙生物」发来感谢信,企企通赋能生物科技领域数字化采购建设

近日,华熙生物科技股份有限公司(以下简称“华熙生物”)携手企企通打造的数字化采购管理平台成功上线。为感谢企企通在采购数字化项目上的付出和努力,华熙生物特意发来暖心感谢信。 在感谢信中,华熙生物表示&#xff1a…

【目标检测实验系列】YOLOv5改进实验:结合VariFocal Loss损失函数,减少小目标漏检问题,高效提升模型检测的召回率(超详细改进代码流程)

目录 1. 文章主要内容2. VariFocal Loss损失函数(原理:简单介绍,可自行详细研究)2.1 VariFocal Loss损失函数2.2 博主数据集实验效果 3. 代码详细改进流程(重要)3.1 新建varifocalLoss.py文件3.2 修改hyp.scratch-low.yaml文件3.3…

【MATLAB图像处理实用案例详解(20)】——利用BP神经网络实现人脸朝向判断

目录 一、问题描述二、算法步骤2.1 读入数据并提取特征2.2 创建神经网络并训练2.3 测试 三、结果分析 一、问题描述 BP神经网络利用输出后的误差来估计输出层的直接前导层的误差,再用这个误差估计更前一层的误差,如此一层一层的反传下去,就获…

4_用dockerfile制作镜像

Docker 镜像原理 思考: Docker 镜像本质是什么? Docker 中一个centos镜像为什么只有200MB,而一个centos操作系统的iso文件要几个个G? Docker 中一个tomcat镜像为什么有500MB,而一个tomcat安装包只有70多MB&#xff…

JavaScript中的Concurrency并发:异步操作下的汉堡制作示例

这篇文章想讲一下JavaScript中同步与异步操作在一个简单的示例中的应用。我们将以制作汉堡为例,展示如何使用同步方法、回调函数(callbacks)和Promise与async/await来实现该过程。 Let’s imagine we’re trying to make a burger: 1. Get …

基于simulink使用混合波束成形对射频毫米波发射器进行建模

一、前言 本例说明了一种使用66元件混合波束成形天线对32 GHz QPSK射频发射和接收系统进行系统级建模和仿真的方法。该系统包括射频缺陷、发射阵列辐射效应、窄带接收阵列和基带接收器,可校正系统损伤和消息解码。天线波束形成方向使用方位角和仰角定义,…

C语言CRC-16 USB格式校验函数

C语言CRC-16 USB格式校验函数 CRC-16校验产生2个字节长度的数据校验码,通过计算得到的校验码和获得的校验码比较,用于验证获得的数据的正确性。基本的CRC-16校验算法实现,参考: C语言标准CRC-16校验函数。 不同应用规范通过对输…

计算机图形辐照度学、光度学

文章目录 前言:一、什么是辐照度学二、什么是光度学 前言: 在计算机图形学中是把辐射(Radiance)等概念和亮度(Luminance)等概念不做区分的。辐射是辐照度学的概念,而亮度则是光度学上的概念。 辐照强高度并不意味着亮度就强,就比如…

VTK 几何体连通区域分析 vtkPolyDataConnectivityFilter

前言: vtkPolyDataConnectivityFilter 使用过,但网上没有看到完事的教程;这里整理一下; 提取数据集中连通的多边形数据。 该类是一个滤波器,提取cell(区域) - 拥有公共点或者满足某个阈值 该类…

Soft-RoCE部署及通信测试

Soft-RoCE部署及通信测试 Soft-RoCE是一种基于软件的RoCE(RDMA over Converged Ethernet)实现。RoCE是一种在以太网上实现RDMA(Remote Direct Memory Access)的技术,它允许数据在网络中直接传输,而无需CPU…

【ElasticSearch】几点优化及面试相关

文章目录 硬件选择分片策略合理设置分片数推迟分片分配 路由选择写入速度优化(磁盘优化)批量数据提交优化存储设备合理使用合并减少 Refresh 的次数加大 Flush 设置减少副本的数量 内存设置ES配置文件解析Elasticsearch 面试题为什么要使用 Elasticsearch?Elasticsearch 的 ma…

【Java网络编程】基于UDP-Socket 实现客户端、服务器通信

​ 哈喽,大家好~我是你们的老朋友:保护小周ღ 本期为大家带来的是网络编程的 UDP Socket 套接字,基于 UDP协议的 Socket 实现客户端服务器通信,Socket 套接字可以理解为是,传输层给应用层提供的一组 API,…

Java中提升接口性能的一些方法

目录 1.使用线程池并行执行2.数据库优化2.1 小表关联大表2.2 反三大范式操作2.3 增加索引2.4 减小事务粒度2.5 读写分离、分库分表 3.拥抱缓存3.1 Redis3.2 内存缓存 4.锁和异步4.1 减小锁的粒度4.2 分布式锁 1.使用线程池并行执行 假如有一个接口的逻辑如下: 接口…

cadence遇到的问题

1、最烦人的,突然卡住。 设置grid卡住,导出libraries卡住,选择其他产品时卡住。 从微软拼音输入法改成美式键盘后能解决一些问题。但不能解决全部。 今天下载了搜狗输入法来替代微软自带输入法。效果奇佳,真的可以诶。 2、如果…

沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置

目录 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置 CH32V208 CH32V208系列是沁恒32位RISC-V中比较新的一个系列, 基于青稞RISC-V4C内核, 最高144MHz主频, 64KB SRAM,128KB Flash, 供电电压2.5/3.3V. 这个型号的特点: 除了特有的硬件堆栈区、…

【C++11那些事儿(三)】

文章目录 一、可变参数模板1.1 概念引入1.2 递归函数方式展开参数包1.3 逗号表达式展开参数包1.4 可变参数模板在STL中的应用 二、包装器1.1 function1.2 bind 一、可变参数模板 1.1 概念引入 C11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板&#x…

链表的添加修改删除操作

public class HeroNodeDemo {public static void main(String[] args) {HeroNode hero1 new HeroNode(1, "松江");HeroNode hero2 new HeroNode(2, "武松");HeroNode hero3 new HeroNode(3, "及时雨");HeroNode hero4 new HeroNode(4, "…

AWVS-window版本安装

Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞。 一、下载 链接:https://pan.baidu.com/s/1GuLCmYBmhVYA2_qBwfjZhw 提取码&#x…

管家婆安装导致电脑蓝屏问题解决方案

安装完管家婆后,电脑蓝屏,重启还是蓝屏,这该怎么办? 导致的原因:因加密狗驱动不适配于Windows10系统,导致电脑蓝屏 修复方案:进入电脑安全模式(怎么进入问度娘)&#…

css奇淫巧计

1.input文本内容替换 -webkit-text-security:通过用形状替换字符,仅影响那些字段不是的typepassword 可选值:none (无),circle (圆圈),disc (圆形),square &a…