RabbitMQ消费端限流策略(十)

本文介绍RabbitMQ中消费端限流的重要性及其应用场景。面对大量未处理消息时,消费端限流能够避免服务器因高并发而崩溃。通过设置RabbitMQ的qos参数,可以有效控制消费端接收消息的数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

消费端限流

什么是消费端限流

场景

 我们RabbitMQ服务器有上万条未处理的消息,我们随便打开一个消费者客户端,会出现下面情况:

 巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理这么多数据。(导致服务器崩溃,线上故障)

 生产端一次推送几百条数据库,客户端只接收一两条,在高并发的情况下,不能再生产端做限流,只能在消费端处理。

解决方法

 RabbitMQ提供了一种qos(服务质量保证)功能,在非自动确认消息的前提下,

 如果一定数据的消息(通过基于consumer或者channel设置qos的值)未被确认前,不进行消费新的消息。减压减负  

 void BasicQos(uint prefetchSize,ushort prefetchCount,bool global);

   消费端体现,一次最多能处理多少条消息(基本上为1),限流策略在什么上应用(channel--true,consumer---false)

   prefetchSize:0

   prefetchCount:会告诉RabbitMQ不要同时给一个消费者推送多余n个消息,

           一旦有n个消息还没有ack,则该consumer将block调,知道有消息ack

    global:true\false是否将上面设置应用于channel,简单的说就是上面限制是channel

            级别的还是consumer级别,基本使用false。

注意:prefetchSize和global这两项,rabbitmq没有实现,暂不研究

   prefetch_count在no_ack=false的情况下生效,在自动应答的情况下两个值不生效。

        //生产端代码
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("127.0.0.1");
        connectionFactory.setPort(5672);
        connectionFactory.setVirtualHost("/");
        
        Connection connection = connectionFactory.newConnection();
        Channel channel = connection.createChannel();
        
        String exchange = "test_qos_exchange";
        String routingKey = "qos.save";
        
        String msg = "Hello RabbitMQ QOS Message";
        
        for(int i =0; i<5; i ++){
            channel.basicPublish(exchange, routingKey, true, null, msg.getBytes());
        }
        //消费端代码
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("127.0.0.1");
        connectionFactory.setPort(5672);
        connectionFactory.setVirtualHost("/");
        
        Connection connection = connectionFactory.newConnection();
        Channel channel = connection.createChannel();
        
        
        String exchangeName = "test_qos_exchange";
        String queueName = "test_qos_queue";
        String routingKey = "qos.#";
        
        channel.exchangeDeclare(exchangeName, "topic", true, false, null);
        channel.queueDeclare(queueName, true, false, false, null);
        channel.queueBind(queueName, exchangeName, routingKey);
        
        //1 限流方式  第一件事就是 autoAck设置为 false
        //接收1条消息,
        channel.basicQos(0, 1, false);
        
        channel.basicConsume(queueName, false, new MyConsumer(channel));
        //自定义消息端
        private Channel channel ;
    
    public MyConsumer(Channel channel) {
        super(channel);
     //接收ack进行消息发送
this.channel = channel; } @Override public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException { System.err.println("-----------consume message----------"); System.err.println("consumerTag: " + consumerTag); System.err.println("envelope: " + envelope); System.err.println("properties: " + properties); System.err.println("body: " + new String(body)); //false不支持批量签收 channel.basicAck(envelope.getDeliveryTag(), false); }

 

转载于:https://www.cnblogs.com/luhan777/p/11193148.html

Mini SAP 6.2 安装 ABAP/4 编程 一,准备   A),建议备份操作系统,如GHOST,安装失败后可快速恢复操作系统,再次安装; B),安装的目标分区格式必须是NTFS; C),联通局域网,如果是单机使用最好是(添加硬件→添加新的硬件设备→网络适配器)安装虚拟网卡Microsoft Loopback Adapter并设 置 IP、DNS; D),DAEMON Tools用于加载BIN格式的镜像文件,最好将虚拟的光驱设为Z ; E),在这个文件 C:\WINNT\system32\drivers\etc\services (Windows 2000) 或者 C:\Windows\system\32\drivers\etc\services (Windows XP) 中必须不含有端口为 3600 的一行(服务); F),在 Windows XP 上的特别要求 在 C:\Windows\system\32\drivers\etc\hosts 这个文件中,一般包含了这么一行 127.0.0.1 localhost 必须配置这么一行 ,并新添加 Open the network connectivity definition with start->control panel->network connections for defining the network connection. Select ->extended-> allow other users in network. Activate new configurations. Select remote desktop within extended configuration menu. G),以前安装有 sql server,安装 MiniSAP 前必须先予以 uninstall,并删除安装目录。  注:E、F、G项参考 廖巍 作《安装 Mini SAP 的注意事项》 ,我在之前的安装未做这三项也正常安装,因水平有限未发现系统 中有何影响。应该是版本不同的缘故! 二,安装 安装时需更换镜像文件,但安装界面无明显的提示,按如下步骤操作即可: A),DAEMON加载CD1,执行 X:\setup.bat 开始安装; B),进度25%时提示插入源文件,此时仍是 CD1; C),进度27%时提示插入源文件,此时仍是 CD1; D),进度41% 时提示插入源文件,更换为 CD2; E),进度44%时提示插入源文件,更换为 CD3; F),进度47%时 提示插入源文件,更换为 CD1; G),X:\resume_setup.bat,需要重装一遍,以激活licence(如果licence不能启动,可考虑这一步骤);    我安装完后出现5个warning,只要没有error就OK。 H),GUI安装,执行 X:\MINIGUI\setup.exe; 安装完成后桌面出现Start SAP ABAP Engine和SAPlogon两个快捷方式。 三,登录    A),“SAPlogon”,出现登录窗口(SAP Logon 620),点击【新(N)…】按钮 在“新增”窗口做如下配置: 说明:“任意填写” 应用服务器:(假设这是你的电脑名) SAP路由字符串:不填 SAP系统:选择R/3 系统编号:00 点击【确定】按钮,返回到登录窗口(SAP Logon 620) 此时在登录窗口(SAP Logon 620),选中“任意填写”,登录 Client User Password -------------- 000 BCUSER minisap 000 DDIC minisap 000 Sap* Pass BCUSER是普通用户;DDIC为管理员用 B),登录后窗口的工具栏上,点击倒数第3个按钮(generates a shoutcut on the desktop) 配置“New SAP GUI Shoutcut”窗口 system date: ----------------------- Description: “任意填写”(下拉列表中选择上一步中填的实际名称) system ID : BSP SAP GUI parmeter: logon date: ----------------------- client: 000 user name: BCUSER password:minisap language:EN-English(有中文选项,可惜并不支持,不知有没有办法把SAP 4.71的中文包挂进来) application: ----------------------- 不管 starting: ----------------------- 不管 配置完成后,点击【ok】,然后桌面上出现图标“ , MIN SAP Easy Access.sap” 以后每次先运行“Start SAP ABAP Engine”,然后再运行“ , MIN SAP Easy Access.sap” 四,ABAP/4编程 A),创建程序时程序以Z、Y、SAPMY、SAPMZ开头,并遵守以下规则,否则提示无法创建程序; 创建程序名称时遵循如下规则: • 使用至少1个但不超过8个字符(8个字符是4.6C标准,实际可以超过8位长度) • 不要使用下列字符 • 句点(.) • 逗号(,) • 空格() • 括号'('')' • 单引号(') • 双引号(") • 等号(=) • 星号(*) • 元音变音(_,_,_,_,_,_)和'_' • 百分号(%)和下划线(_):这些符号是SQL语句的通配符,所以也会导致问题。SAP建议在程序名称中不要使用它们。  创建程序名称时请遵守这些命名约定: • 报表程序(以列表格式输出数据分析):Yaxxxxxx或Zaxxxxxx。用应用程序区的分类字母替换a。用任何有效字符替换x。注意SAP报表 程序遵守相似的命名约定:Raxxxxxx。 • 任何其它ABAP/4程序(培训程序或事务程序):SAPMYxxx或SAPMZxxx。用有效字符替换x。注意标准SAPABAP/4程序遵守相似的命 名约定:SAPMaxxx,其中a代表某应用程序区。 B),创建练习程序时 Package 最好选择 $TMP  (开发)一项; C),菜单Environment→examples→ABAP examples中可有ABAP的实例,是学习研究的好东西; D),学习ABAP/4编程推荐《SAP ABAP/4 开发宝典中文版》约1.32M。 SAP NetWeaver 2004s SAP NetWeaver 7.0 ABAP/4 新ABAP编辑器 一,安装要求: • Windows XP Professional (Service Pack 2) 或 Windows Server 2003 • 机器名长度不超过13 • NTFS文件系统 • Internet Explorer 5.01 或更高, Firefox 1.0 或更高 • 最小 1G 物理内存 • Intel Pentium III/1.1 GHz 或 higher (or compatible) • 22G硬盘空间,安装文件临时硬盘空间10G • 显示分辨率(1024x768 or 更高, 256 色)安装网卡并设置IP、DNS,无网卡时安装虚拟网卡Microsoft Loopback Adapter并设置IP、DNS • 操作系统中无其他SAP系统 • 在这个文件 C:"WINDOWS"system32"drivers"etc"services (Windows 2003) 或者C:"Windows"system"32"drivers"etc"services (Windows XP) 中必须不含有端口为3200,3600,8000 的服务  下载地址:ftp://ftp.sap.com/pub/sdn/devkits/netweaver/abap/  源文件:SAPNW7.0ABAPTrialSP12 2RAR分卷 共2.52G 其他文件:404M    安装后:≈15G(不包括W2k3系统) 二,安装 安装时间约30分钟。    A),查看X:"SAPNW7.0ABAPTrialSP12"start.htm的提示操作或双击X:"SAPNW7.0ABAPTrialSP12"image"setup.exe开始安装,一路默认确定并设 置密码,约30分钟完成安装,; B),GUI安装,执行 X:"SAPNW7.0ABAPTrialSP12"SAPGUI"SapGuiSetup.exe; 安装完成后桌面出现SAP Management Console和SAPlogon两个快捷方式。 三,登录    A),“SAPlogon”,出现登录窗口(SAP Logon 710),点击“系统”选项卡,再点击【新建项目(N)…】按钮 “创建系统条目”界面,不理,直接下一步: “连接类型:”选“自定义应用程序服务器” 描述:“任意填写” 应用服务器:(假设这是你的电脑名) 系统编号:00 系统标识:000 “网络”、“代码页”选项卡用默认值。 点击【确定】按钮,返回到登录窗口(SAP Logon 710) 此时在登录窗口(SAP Logon 710),选中“任意填写”,登录 Client User Password -------------- 000 Sap* minisap 000 BCUSER minisap 000 DDIC minisap BCUSER是普通用户;DDIC为管理员用 B),BCUSER用户的环境修改建议。默认收藏夹中无SAP EDITOR一项,通过输入快捷代码 SE38 调用编辑器,这时可在TOOLS中 修改菜单项名称 。 四,ABAP/4编程 未获ACCESS KEY时创建程序的规则如下 A),创建程序时程序以Z、Y、SAPMY、SAPMZ开头,并遵守以下规则,否则提示无法创建程序; 创建程序名称时遵循如下规则: • 使用至少1个但不超过8个字符(8个字符是4.6C标准,实际可以超过8位长度) • 不要使用下列字符 • 句点(.) • 逗号(,) • 空格() • 括号'('')' • 单引号(') • 双引号(") • 等号(=) • 星号(*) • 元音变音(_,_,_,_,_,_)和'_' • 百分号(%)和下划线(_):这些符号是SQL语句的通配符,所以也会导致问题。SAP建议在程序名称中不要使用它们。  创建程序名称时请遵守这些命名约定: • 报表程序(以列表格式输出数据分析):Yaxxxxxx或Zaxxxxxx。用应用程序区的分类字母替换a。用任何有效字符替换x。注意SAP报表程序遵守相似的命名约定:Raxxxxxx。 • 任何其它ABAP/4程序(培训程序或事务程序):SAPMYxxx或SAPMZxxx。用有效字符替换x。注意标准SAPABAP/4程序遵守相似的命名约定:SAPMaxxx,其中a代表某应用程序区。 B),创建练习程序时 Package 最好选择 $TMP  (开发)一项,; C),菜单Environment→examples→ABAP examples中可有ABAP的实例,是学习研究的好东西;    四,MaxDB数据库 安装 MaxDB Database Manager 和 SQL Studio 方法一:开始菜单中MaxDB下有安装图标 方法二:源文件直接安装 目录X:"SAPNW7.0ABAPTrialSP12"maxdbtools"DBM76.exe X:"SAPNW7.0ABAPTrialSP12"maxdbtools"SQLSTD76.exe Database Manager登录 Database Server: localhost Port:不填 Database Name: NSP User Name: control Password: 安装时设定的密码 SQL Studio登录 Database Server: localhost Database Name: NSP User Name: SAPNSP Password: 安装时设定的密码 MaxDB同MySql出自同一公司,但MaxDB的文档较少,慢慢找吧! 五,申请license key激活SAP*帐号 Sap*帐号登录。菜单第一项“SLICENSE-Administer SAP Licenses”按提示操作即可。注意项:安装SAP系统的电脑必须能上网,在申请Licenses的界面中系统类型选择“NSP - SAP NetWeaver 7.0/2004s (SP9 and higher)”,搞错了申请的文件就不能安装,提交后,邮件接收“NSP.txt”文件,649字节,按提示安装,使用期限3个月。此文件是与硬件和SAP系统的电脑关联一一对应,安装SAP系统的电脑不能上网就不能申请,别无他法。 六,ACCESS KEY破解 参考网上的ACCESS KEY 破确方法,初步了解了破解的原理,修改LSKEYF00文件等等,稍有并异,修改原文件加入SY-SUBRC =0代码也都成功,最后在开发时还是要示输入ACCESS KEY,希望有SAPNW7.0ABAPTrialSP12破解成功的朋友回个邮件给我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值