最近研究RabbitMQ的一些心得

【科研兔】文献综述辅助阅读网站-科研兔 大家好!我今天想分享一个极其有用的科研工具——Research Rabbit(网址:www.researchrabbitapp.com)。虽然它主要是为科研人员设计的,不仅可以帮助你轻松搜索各种学术文献,还可以用它找到关于自己的研究主题大量的相关文章和资料。 阅读详情

 关于RabbitMQ的文章网上转来转去最多的是一篇<<[RabbitMQ+Python入门经典] 兔子和兔子窝>>(随便给个链接了).这篇文章的讲解是很风趣,很适合用来理解一些基础概念.理解了概念以后就要进行一些实际性的实验了.原文给的python的例子.不是笔者想要的,笔者要用php的.

 

      关于php和rabbitmq网上又有一篇被转来转去的文章<<安装 php-rabbit: RabbitMQ 的 PHP 扩展>>.文章里提到的php-rabbit,笔者死活是访问不了:

 

      让几个不同地方的哥们帮着访问下载,都下载不了,推断可能是这个项目被删除了.问一个哥们儿,说他们那用的是php-amqp.从官方下的库竟然不好使.于是死皮懒脸的管哥们要了他们正在用的版本和示例,又鉴于网上 php-amqp版本的rabbit操作细节甚少(可以说没有么?),于是有了今天这份儿总结.

测试平台:

Distributor ID: Ubuntu

Description: Ubuntu 9.10

Release: 9.10

Codename: karmic

 

      既然是ubuntu,安装rabbitmq服务端是很easy的事情,一条命令搞定:

apt-get install rabbitmq-server

 

      接下来的就是折腾了将近两天的心得体会了.

 

      1.必需掌握的指令

添加用户:

rabbitmqctl add_user rainbird password

添加权限:

rabbitmqctl set_permissions -p "/" rainbird ".*" ".*" ".*"

删除测试用户:

rabbitmqctl delete_user guest

 

所有指令列表(很简单的英文):

add_user        <UserName> <Password>

delete_user     <UserName>

change_password <UserName> <NewPassword>

list_users

add_vhost    <VHostPath>

delete_vhost <VHostPath>

list_vhosts

set_permissions   [-p <VHostPath>] <UserName> <Regexp> <Regexp> <Regexp>

clear_permissions [-p <VHostPath>] <UserName>

list_permissions  [-p <VHostPath>]

list_user_permissions <UserName>

list_queues    [-p <VHostPath>] [<QueueInfoItem> ...]

list_exchanges [-p <VHostPath>] [<ExchangeInfoItem> ...]

list_bindings  [-p <VHostPath>] 

list_connections [<ConnectionInfoItem> ...]

       2.vhost  / 不能删除

 

      删除/以后,新建立的vhost不能正常使用(即便不删除/,新建立的vhost也是不能正常使用).不知道为什么,有待研究.

 

      3.关于持久化

 

      示例里没有一点儿和持久化相关的东东,而这却是笔者最关心的,想想作为消息服务器如果不能保证消息一定被接收到,算什么事儿啊?比着网上狂转的python版本从php-amqp的库里一点一点儿翻,找到了如下持久化的设置:

 

      接收端声明队列和交换机自动建立:

$ch->queue_declare($_QUEUE,false,true,false,false);

第三个参数设置true保证服务器重启后,自动建立队列

第五个参数设置成false防止接收端没连接的时候丢失消息

 $ch->exchange_declare($EXCHANGE, 'direct', false, true, false);

第四个参数设置true保证重启后,自动建立交换机

第五个参数设置false防止接收端断开后,交换机被删除

 

      发布端声明消息持久:

$message = new AMQPMessage(serialize($object), array('content_type' => 'text/plain', 'delivery_mode' => 2));

 

      同时满足了上面三个条件,就可以保证未接收的消息在服务器意外重启以后依然存在了.

 

      4.持久化的后遗症

 

      比如说你初始化了一个队列msgs.你会发现它真的持久了!每次服务器端重启后,通过list_queues命令查看的时候都存在.但是时间久了,这个msgs我们并不需要了,怎么办呢?笔者发现,想清除这个队列只能删除它所在的vhost,然后再重建vhost,再设置vhost的权限.

rabbitmqctl delete_vhost /

rabbitmqctl add_vhost /

rabbitmqctl set_permissions -p / rainbird '.*' '.*' '.*'

 

      要注意,如果这个操作过程中有接收端处于连接状态它们不会自动断开,但也不会再收到消息,需要手动重新连接一下.

 

      5.关于修改监听ip和监听端口

 

      出于一些需要,比如我们有多个ip,我们希望rabbitmq仅运行在指定的ip上.或者考虑到安全问题,我们希望修改一下rabbitmq的监听端口.默认安装完成以后,在/etc下面会有一个rabbitmq的空目录,这时候我们需要手工创建rabbitmq.conf,并写入相关内容.

vi /etc/rabbitmq/rabbitmq.conf

RABBITMQ_NODE_IP_ADDRESS=0.0.0.0

RABBITMQ_NODE_PORT=2222

 

      保存以后重启服务就生效了.

 

      这个东东网上又没介绍,翻了半天+无限尝试才搞出来.

 

      6.关于运行接收端cpu100%问题

 

      第一眼看到接收端会运行一个while等待消息的时候,笔者就知道这个进程肯定cpu占用会100%.在代码里几处while尝试添加usleep无效后,笔者最后还是在官方的问题列表里找到了答案:

vi +286 amqp_wire.inc

293 while ($read < $n && (false !== ($buf = fread($this->sock, $n - $read))))

294             {

295                 usleep(50000);

296                 $read += strlen($buf);

297                 $res .= $buf;

298             }   

 

      笔者的出发点是对的,只是没找对while.可能有人会奇怪为什么要用usleep(50000)呢?实际上笔者有遇到运行php起来的daemon导致cpu100%的情况.当时笔者加的是usleep(500000)也就是半秒钟.这样就可以使进程看上去cpu占用为0.没想到再降一个数量级也是可以正常的,这次算赚到了.

 

      7.学到了error_log函数

 

      以前有见过这个函数,以为是向系统日志里写log的时候才用得到呢,没想到还可以像下面这样用:

function debug_msg($s)

{

    //error_log($s);

}

 

      在不同的地方写上debug_msg,最后不用的时候时候,直接注释掉error_log,不错的小技巧!

经验分享| 文献调研 - ResearchRabbit Research Rabbit Research Rabbit是一个集检索、调研和管理文献为一体的全能免费科研神器。 「功能」 可以快速高效地找到你感兴趣研究方向的大量文献,并呈现出可视化的关系网图,确保你没有错过一篇重要的论文; 为你的论文创建参考文献; 发现最相关的先前和衍生论文; 建立文件夹,并与zotero联动,清晰明了地整理、分析、引用相关文献; 总之,便于一切与文献有关的工作:综述撰写、文献汇报、文献管理及领域热点动态等。 ✦ 网址... 阅读详情

相关推荐

spring boot rabbitmq 延时消费的简单实现

目录 实现一:TTL 设置队列过期时间实现延时消费 设置消息过期时间实现延时消费 实现二:插件实现 公司最近需要用到rabbitmq,考虑到业务需求,后期可能需要用到mq延时消费机制。工作一年,对很多技术都不了解,还是一名技术小白,决定主动学习研究一下。 在网上查阅浏览了许多帖子,关于延时消费主要分为两种实现,一种是rabbitmq的TTL机制,一种是rabbitmq的插件实现。 感...

chengjieping的博客 7585

RG不动点与紫外-红外对偶:尺度表示等价条件与内蕴时间的尺度不变性刻画

本文系统研究了重整化群(RG)不动点与紫外-红外对偶的理论框架及其在多尺度物理中的应用。通过威尔逊重整化群方法,作者推导了RG不动点的分类准则与数学稳定性条件,揭示了UV-IR对偶的物理本质。研究从算符谱、RG流动力学、关联函数和拓扑几何四个维度建立了尺度表示的严格等价判据,并在代数对称性、微分几何流形和普适标度不变量三个层面刻画了内蕴时间的尺度不变性。该理论框架在量子引力、AdS/CFT全息对偶、强关联系统和湍流场论等领域的应用表明,RG不动点与UV-IR对偶为理解跨尺度物理现象提供了统一的理论支撑,具有

方见华 3993

S7-1200模拟量

将两种不同的金属或合金金属焊接起来,构成一个闭合回路,利用温差电动势来测量温度,当两端存在温度梯度时,回路中就会有电流通过,此时两端之间就存在电动势--热电动势,这就是所谓的塞贝克效应(seebeck effect)。温差越大,热电动势越高。热电偶是有正负极性的,所以需要确保导线连接到正确的极性,否则会造成明显的测量误差。为了使温度补偿达到最佳效果,必须将热电偶模块安装在温度稳定的环境中简述:两种金属,每一种金属随温度变化是不同的,出现温差--由俩金属构成的回路就会有电流经过,因此两端形成热电动势。

王阿妹小天才的博客 2592

RabbitMQ(五) rabbitMQ集群详解

一、 RabbitMQ集群架构模式 主备模式(Warren) 主节点提供读写功能,备用节点不提供任何读写功能,只是做备用。在主节点宕机时,能实现自动切换成为主节点,主节点成为备份节点。 一般在并发数和数据量不高的情况下,这种模型好用且简单。 主节点和备份节点共享存储,当主节点宕机HaProxy会自动将备份节点切换为主节点 HaProxy配置: listen rabbitmq_cluster ...

qq_38360901的博客 1325

【深度剖析】三一重工的数字化转型(中篇)

三一重工在数字化转型方面取得了提高效率、降低成本、加强研发创新和改善内控管理等多方面的成效。本研究旨在通过对三一重工数字化转型的深入分析,引导企业思考在第四次工业革命与第三次能源革命交汇的超级技术窗口期,如何进一步把握发展机遇,并为同行业其他企业提供探索性的建议。作为装备制造行业的佼佼者,三一重工的数字化转型受到了业界的广泛关注。作为行业内首批接触并实践数字化转型的企业之一,三一重工的转型经验不仅成功,而且积累了丰富的理论与实践,为其他制造业企业的数字化转型提供了可借鉴的范例。

领信卓越的博客 2306

聚类模型-层次聚类

聚类模型 1、层次聚类 2、原型聚类-K-means 3、模型聚类-GMM 4、EM算法-LDA主题模型 5、密度聚类-DBSCAN 6、图聚类-谱聚类 一、层次聚类 一、聚类理论 ​ 一般来说,聚类是在训练样本的标签信息不知的情况下,学习样本内在的性质和规律,将有限的集合划分成ccc类。根据“方以类聚,物以群分”的思想,类内对象尽可能的相似,...

myazi 6504

[转] 最近研究RabbitMQ的一些心得

[转] 最近研究RabbitMQ的一些心得 关于RabbitMQ的文章网上转来转去最多的是一篇<<[RabbitMQ+Python入门经典] 兔子和兔子窝>>(随便给个链接了).这篇文章的讲解是很风趣,很适合用来理解一些基础概念.理...

dashu1993的博客 156

[代码开源]基于DistFlow的IEEE33和IEEE69节点最优潮流模型(OPF)实现与性能分析

本文详细介绍了基于DistFlow的IEEE33和IEEE69节点最优潮流模型(OPF)的实现与性能分析。通过代码开源,展示了如何从零搭建电力系统优化模型,解决配电网中的发电成本最小化问题。文章涵盖数据准备、模型实现细节、性能优化建议及常见问题解答,为电力系统研究者提供实用参考。

weixin_29103191的博客 708

工作心得(三)——初识RabbitMQ,RabbitMQ的安装和集群配置

最近被公司派去研究新技术,RabbitMQ队列服务,用来替换公司正在使用的Redis队列,至于为什么准备使用RabbitMQ而要弃用redis,这里我就不细说了,网上自己去查查资料吧,萝卜白菜各有所爱。 总之,在一系列的查看资料,查文档,上谷歌求助等等,终于我封装的RabbitMQ框架就要上线生产了(预计11.15日上线,经过三轮测试),我没有使用Spring提供的rabbitmq框架,而是自己

Tomoyolq的专栏 3169

在Proteus中用80C51模拟4线SPI点亮OLED屏幕

在Proteus里用80C51模拟4线SPI控制OLED屏幕使其显示图案(汇编实现)。

Connor3093的博客 5003

QT下利用FFTW实现功率谱密度分析(周期图法)

写在前面 出于项目需求,需要在QT的msvc 2015编译环境下实现功率谱密度估计。 所以这个需求很直接的关键词就是 1. C++ 2. QT 3. 傅里叶变换 4. 功率谱密度估计 但是在网上搜索了很久,没有一个非常直接的答案。所以我觉得很有必要写一篇文章来说明,在QT msvc2015 32bit环境下如何实现功率谱密度估计。 本文并没有经过严格编辑,但代码是已经可以跑通的,如...

李时珍食疗志的博客 5223

RabbitMq研究历程一:如何使用RabbitMq发送,接收消息

RabbitMq研究历程一:如何使用RabbitMq发送,接收消息

hufanforver的专栏 1800

RK3568 HDMI输出调试:分辨率切换与EDID解析

厂商信息(Vendor ID)显示器型号(Product ID)支持的分辨率列表色彩特性音频支持情况检查项方法HPD 信号EDID 读取当前模式TMDS 时钟PHY 状态。

小灰灰的博客 1486

RabbitMQ 连接断开处理-自动恢复

RabbitMQ 连接断开处理-自动恢复 Rabbitmq 官方给的NET consumer示例代码如下,但使用过程,会遇到connection断开的问题,一旦断开,这个代码就会报错,如果你的消费者端是这样的代码的话,就会导致消费者挂掉。 using System; using RabbitMQ.Client; using Rabbi...

weixin_30902675的博客 4030

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

springboot整合rabbitmq

总结:​ 在写这篇博客的时候,中间想过很多次想要停下来的冲动,因为这种博客在网上应有尽有。但是看到《暗时间》作者刘未鹏对书写博客重要的阐述时。我恍然大悟,书写博客是对自己思维的总结,而在这期间我获得的收益远远大于文章内容所阐述的东西,而且还培养了自己解决问题的能力。下一步计划:消息队列的交换机几种模式声明队列和交换机时,对其参数的详细说明使用MQ所产生的背景问题的解决。在写这篇博客的时候,中间想过很多次想要停下来的冲动,因为这种博客在网上应有尽有。

weixin_51938350的博客 1550

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

探秘RabbitMQ:社区插件与扩展的奇妙世界【RabbitMQ 三】

本篇博客将引领你进入RabbitMQ的社区插件与扩展领域,揭示各种令人惊叹的功能和奇妙的应用场景。从高级队列特性到定制化插件,你将领略RabbitMQ社区的无限可能性。

todoitbo的博客 5677

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

RabbitMQ深入学习指导

本文收集了一些关于RabitMQ学习参考的资料,以备学习之用。最初对RabbitMQ学习基于一次愉快的尝试,但是学习怎可不深入之?每一种MQ都解决了不同的问题,各有所长,所以深入学习和研究就是很有必要的了。最近在研究阿里巴巴的RocketMQ,发现之前的RabbitMQ学习止于环境搭建和基本的测试连通性,离真正的应用自如还有一定的差距,于是迫不及待想写一篇关于如何深入学习Rabbit的文章(因为时...

纸上得来终觉浅,绝知此事要躬行 3822

基于NetCore的RabbitMQ使用

NetCore中集成RabbitMQ的使用

weixin_43872830的博客 3500

RabbitMQ非root用户安装

背景 最近公司一直在做一件事,那就是将老的消息队列方式迁移到RabbitMQ上,正好借此机会学习研究下RabbitMQ是一种什么样的消息队列,都有那些优势,通过理解自己整理总结下,从最开始的安装开始整理。 使用版本 Erlang:otp_src_22.0.tar.gz RabbitMQ:rabbitmq-server-generic-unix-3.7.15.tar.xz 安装依赖库 这些库都是需要...

风灵Erick的博客 3469

windows安装RabbitMq 15672访问找不到

开始一顿查找资料,大部分资料都是说rabbitmq.conf.example这个配置,我安装好几次也没有这个文件,还以为我安装的是最新版本的问题(rabbitmq3.10.6,Erlangotp_win64_25.0)。这个文件通常是rabbitmq.conf,advanced.config里面没有内容,只有。RabbitMQ服务已经启动成功。RabbitMQ服务正在启动.......

csdn_aspnet的专栏,请点击博客主页右上角三个点中的私信联系 9万+

K8S下RabbitMQ队列重启消失问题解决

最近突然玩起来RabbitMQ,做了个小爬虫,但K8S的node经常会出现不稳定的情况,然后我的K8S的node2挂了,为了快速恢复,我按照我之前文章的方式,快速生成了一个node3,马上给 用上了,紧接着发现原来部署在node2上的RabbitMQ也挂掉了,不得已scale到0,再scale到1,自动重新部署到node3上。 结果就出问题了。。。启动一看,RabbitMQ的队列都没了。。。。 于是一顿查,说要durable参数为true,才能队列持久化,写数据的时候要properties.Delive

kevinmartin的专栏 2466

rabbitmq 延时队列研究旅途

上班就要干活给客户解决问题 场景:客户有需求需要做订单超时功能,在超时范围内的时间都可以进行支付操作因为最近在做javaweb方向开发,第一时间就想到了定时器解决,但是考虑性能还 是放弃了,在经过百度的海洋中发现rabbitmq可以实现此需求好像还不错就使用此款方案了,初步查看百度或一些文档得知rabbitmq可以用一种叫死信队列的方式实 现,经过测试这种实现方式有个问题,比如说生产一条10秒超时的消息,再立刻生产一条5秒的超时消息,会出现异常后者的消息无法消费,这种场景需求还是有的, 所以继续..

万人敌 151
下一篇: RabbitMQ入门教程 For Java【1】 - Hello World
赢阡
博客等级 码龄10年 6粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值