镜像下载、域名解析、时间同步请点击 阿里云开源镜像站
消息队列(Message Queue,简称MQ),从字面意思上看,本质是个队列,FIFO先入先出,只不过队列中存放的内容是message而已。
其主要用途:不同进程Process/线程Thread之间通信。
队列是一种先进先出的结构:FIFO
把要传输的数据放在队列中。
把数据放到消息队列叫生产者
从消息队列取出消息叫做消费者
RabbitMQ是一套开源(MPL)的消息队列服务软件,是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成。
RabbitMQ的特性
系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦!
系统A可以生成一个id,然后系统B需要这个id,系统A去调用了系统B
过了段时间,系统C说也要系统A的id,那么这时接触系统B的引用,去讲id传给系统C
这时又来了系统D,系统D也要系统A的id,系统A又解除了系统C,去调用了系统D,反反复复,很麻烦
系统A的负责人觉得改来改去太麻烦了,没意思,跑路了。
过段时间,公司来了位大佬,大佬说将系统A的id,存入消息队列,谁需要谁去拿,这样系统A就不用来回改动了,完美解决了参数调用问题!
系统A不关心谁去调用id,只负责生产数据并存入消息队列,其它系统即使挂了或请求超时,也跟系统A没有任何关系
这样就实现了系统A、B、C、D之间的解耦!
再来看看这种情况,系统A还是直接调用系统B、C、D
系统A:主要业务
系统B:短信业务
系统C:邮箱业务
系统D:处理后续业务
系统A下单成功后会去调用系统B,但是如果一个一个的调用,会大大的降低效率,假设每个业务执行时间100ms,那么4个业务执行完毕就是400ms,这种就被称为阻塞执行
那么我们的消息队列采用了异步机制,当我们下单完成后,会去异步的调用其它业务,会极大的降低系统的执行时间,提升效率!
例如:双十一大促销,这时的流量是很大很大的,并发很高,比如每秒5000个请求,假设现在又3台机器处理,并且每台机器每秒只能处理1500次请求,那么多出来的请求500请求,会将系统搞垮的,这时我们可以将多出来的请求放入消息队列中
这样即使每秒有10000个请求,也不会将系统搞垮,会在消息队列中等待,由系统去分配请求处理
阿里云Centos7.6服务器
lsb_release -a

在2022年5月,RabbitMQ官方发布推文宣称最新的版本已经不支持Centos7.x系列,但是我们可以通过下载之前支持的版本来部署!
下载RabbitMQ RPM包
RabbitMQ下载

下载成功如下

下载ErLang RPM包
这里需要注意,下载的版本要和RabbitMQ对应,必须支持下载的ErLang版本

我们找到下载的是 3.8.13 ,支持的最低是 22.3 最高是 23.x
下载ErLange

点击Download下载或单机wget复制下在Linux下 下载
使用FileZilla上传至阿里云服务器
阿里云服务器在 /usr/local 下新建 rabbitmq 文件夹

上传完成
安装ErLang
# 解压erlang文件
rpm -Uvh erlang-23.2.7-2.el7.x86_64.rpm
#安装erlang
yum install -y erlang

查看erlang版本
erl -v

在安装RabbitMQ之前要安装一个插件
yum install -y socat

解压并安装RabbitMQ
# 解压
rpm -Uvh rabbitmq-server-3.8.13-1.el8.noarch.rpm
# 安装
yum install -y rabbitmq-server

启动RabbitMQ服务
# 启动服务
systemctl start rabbitmq-server
# 查看当前的运行状态
systemctl status rabbitmq-server
# 重启服务
systemctl restart rabbitmq-server
# 停止服务
systemctl stop rabbitmq-server

可以看到,启动成功!
# 安装RabbitMQWeb管理插件
rabbitmq-plugins enable rabbitmq_management
# 安装完成后重启rabbitmq服务
systemctl restart rabbitmq-server

启动成功,默认Web页面占用端口为 15672,我们去阿里云服务器控制台开放此端口

测试访问
浏览器输入 http://您的ip地址:15672
出现如下界面

默认登录账号密码 guest guest 登录测试

这个意思是我们只能通过本地来登录guest 账户
下面给出解决方案
# 添加一个用户
rabbitmqctl add_user admin admin
# 将用户设置为admin权限
rabbitmqctl set_user_tags admin administrator


访问成功,手动安装成功!
先查看本机是否存在Docker,删除旧版本Docker
查看docker 版本
docker version

没有docker,我们执行以下命令,删除残余文件
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
进入Linux根目录,安装Docker
# 安装yum-utils包(提供yum-config-manager 实用程序)并设置稳定的存储库。
yum install -y yum-utils
# 安装阿里云配置
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Docker 最新引擎
yum install docker-ce docker-ce-cli containerd.io

输入y确认即可!
打开阿里云控制台,弹性计算 --> 容器与镜像服务

打开之后选择 镜像工具 --> 镜像加速器,复制内容即可

进入Linux服务器根据步骤配置镜像加速器
# 创建docker文件夹
sudo mkdir -p /etc/docker
# 打开文件并配置内容
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://pfjide5p.mirror.aliyuncs.com"]
}
EOF
# 重启服务
sudo systemctl daemon-reload
# 启动docker
sudo systemctl restart docker
新建文件夹

配置内容,并重启服务

根据步骤一步步创建即可!
# 获取镜像,这个是带着web页面的
docker pull rabbitmq:management
# 运行 rabbitmq 并映射端口 设置默认账户密码admin
docker run -di --name myrabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:management

浏览器输入 http://您的ip地址:15672 并输入admin admin
出现如下界面

至此,在Docker内安装RabbitMQ完成!
本文转自:https://blog.csdn.net/weixin_45526437/article/details/124797746
我正在尝试使用ruby和Savon来使用网络服务。测试服务为http://www.webservicex.net/WS/WSDetails.aspx?WSID=9&CATID=2require'rubygems'require'savon'client=Savon::Client.new"http://www.webservicex.net/stockquote.asmx?WSDL"client.get_quotedo|soap|soap.body={:symbol=>"AAPL"}end返回SOAP异常。检查soap信封,在我看来soap请求没有正确的命名空间。任何人都可以建议我
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
我打算为ruby脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn
我有一个奇怪的问题:我在rvm上安装了rubyonrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(
我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs
我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
由于fast-stemmer的问题,我很难安装我想要的任何rubygem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=