导航:首页 > 源码编译 > 源码包安装rabbitmq

源码包安装rabbitmq

发布时间:2022-11-17 22:14:19

⑴ RabbitMQ详解1.安装及使用

brew install rabbitmq

Homebrew是Mac的软件包管理器,如果电脑上没有Homebrew可以通过下面的指令安装,官网地址 Homebrew 。
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

/usr/local/etc/rabbitmq

前台启动 :rabbitmq-server
后台启动 :rabbitmq-server -detached

rabbitmqctl status

前台关闭 :control c
后台关闭 :rabbitmqctl stop

可以通过rabbitmqctl命令来进行创建、删除、查看用户、分配用户权限等操作,更详细的操作列表可以查阅官方文档 rabbitmqctl官方文档 ,或通过 rabbitmqctl --help 来查看。

RabbitMQ为了控制用户的权限,一共为用户分配了五种角色,如下所示

RabbitMQ的权限控制是以vhost为单元的,可以把vhost暂时理解为一个权限控制组,后面会进行详细解释,详细的权限管理可以查阅官方文档 Access Control in RabbitMQ 。

linux下RabbitMQ详细安装流程

本文章选取的服务器操作系统:CentOS 7版本;

在 /etc/yum.repos.d/ 目录下添加 .repo 文件(例如:rabbitmq-erlang.repo),因发行版的不同,文件内容也有区别,以下是Centos 7 的配置:

在 /etc/yum.repos.d/ 目录下添加 .repo 文件(例如:rabbitmq.repo),因发行版的不同,文件内容也有区别,以下是Centos 7 的配置:

进入 /etc/systemd/system 或者/usr/lib/systemd/system,并创建rabbitmq-server.service 文件。
注意:通过 yum 安装的,已经在 /usr/lib/systemd/system 目录下存在rabbitmq-server.service 文件。

⑶ Spring整合rabbitmq实践(一):基础

Spring整合rabbitmq实践(二):扩展
Spring整合rabbitmq实践(三):源码

procer:消息生产者;

consumer:消息消费者;

queue:消息队列;

exchange:接收procer发送的消息按照binding规则转发给相应的queue;

binding:exchange与queue之间的关系;

virtualHost:每个virtualHost持有自己的exchange、queue、binding,用户只能在virtualHost粒度控制权限。

fanout:

群发到所有绑定的queue;

direct:

根据routing key routing到相应的queue,routing不到任何queue的消息扔掉;可以不同的key绑到同一个queue,也可以同一个key绑到不同的queue;

topic:

类似direct,区别是routing key是由一组以“.”分隔的单词组成,可以有通配符,“*”匹配一个单词,“#”匹配0个或多个单词;

headers:

根据arguments来routing。

arguments为一组key-value对,任意设置。

“x-match”是一个特殊的key,值为“all”时必须匹配所有argument,值为“any”时只需匹配任意一个argument,不设置默认为“all”。

通过以下配置,可以获得最基础的发送消息到queue,以及从queue接收消息的功能。

这个包同时包含了一些其它的包:spring-context、spring-tx、spring-web、spring-messaging、spring-retry、spring-amqp、amqp-client,如果想单纯一点,可以单独引入。

最主要的是以下几个包,

spring-amqp:

spring-rabbit:

amqp-client:

个人理解就是,spring-amqp是spring整合的amqp,spring-rabbit是spring整合的rabbitmq(rabbitmq是amqp的一个实现,所以可能spring-rabbit也是类似关系),amqp-client提供操作rabbitmq的java api。

目前最新的是2.0.5.RELEASE版本。如果编译报错,以下信息或许能有所帮助:

(1)

解决方案:spring-amqp版本改为2.0.5.RELEASE。

(2)

解决方案:spring-context版本改为5.0.7.RELEASE。

(3)

解决方案:spring-core版本改为5.0.7.RELEASE。

(4)

解决方案:spring-beans版本改为5.0.7.RELEASE。

(5)

解决方案:spring-aop版本改为5.0.7.RELEASE。

总之,需要5.0.7.RELEASE版本的spring,及相匹配版本的amqp-client。

后面所讲的这些bean配置,spring-amqp中都有默认配置,如果不需要修改默认配置,则不用人为配置这些bean。后面这些配置也没有涉及到所有的属性。

这里的ConnectionFactory指的是spring-rabbit包下面的ConnectionFactory接口,不是amqp-client包下面的ConnectionFactory类。

上面这个bean是spring-amqp的核心,不论是发送消息还是接收消息都需要这个bean,下面描述一下里面这些配置的含义。

setAddresses :设置了rabbitmq的地址、端口,集群部署的情况下可填写多个,“,”分隔。

setUsername :设置rabbitmq的用户名。

setPassword :设置rabbitmq的用户密码。

setVirtualHost :设置virtualHost。

setCacheMode :设置缓存模式,共有两种, CHANNEL 和 CONNECTION 模式。

CHANNEL 模式,程序运行期间ConnectionFactory会维护着一个Connection,所有的操作都会使用这个Connection,但一个Connection中可以有多个Channel,操作rabbitmq之前都必须先获取到一个Channel,否则就会阻塞(可以通过setChannelCheckoutTimeout()设置等待时间),这些Channel会被缓存(缓存的数量可以通过setChannelCacheSize()设置);

CONNECTION 模式,这个模式下允许创建多个Connection,会缓存一定数量的Connection,每个Connection中同样会缓存一些Channel,除了可以有多个Connection,其它都跟CHANNEL模式一样。

这里的Connection和Channel是spring-amqp中的概念,并非rabbitmq中的概念,官方文档对Connection和Channel有这样的描述:

关于 CONNECTION 模式中,可以存在多个Connection的使用场景,官方文档的描述:

setChannelCacheSize :设置每个Connection中(注意是每个Connection)可以缓存的Channel数量,注意只是缓存的Channel数量,不是Channel的数量上限,操作rabbitmq之前(send/receive message等)要先获取到一个Channel,获取Channel时会先从缓存中找闲置的Channel,如果没有则创建新的Channel,当Channel数量大于缓存数量时,多出来没法放进缓存的会被关闭。

注意,改变这个值不会影响已经存在的Connection,只影响之后创建的Connection。

setChannelCheckoutTimeout :当这个值大于0时, channelCacheSize 不仅是缓存数量,同时也会变成数量上限,从缓存获取不到可用的Channel时,不会创建新的Channel,会等待这个值设置的毫秒数,到时间仍然获取不到可用的Channel会抛出AmqpTimeoutException异常。

同时,在 CONNECTION 模式,这个值也会影响获取Connection的等待时间,超时获取不到Connection也会抛出AmqpTimeoutException异常。

setPublisherReturns、setPublisherConfirms :procer端的消息确认机制(confirm和return),设为true后开启相应的机制,后文详述。

官方文档描述publisherReturns设为true打开return机制,publisherComfirms设为true打开confirm机制,但测试结果(2.0.5.RELEASE版本)是,任意一个设为true,两个都会打开。

addConnectionListener、addChannelListener、setRecoveryListener :添加或设置相应的Listener,后文详述。

setConnectionCacheSize :仅在 CONNECTION 模式使用,设置Connection的缓存数量。

setConnectionLimit :仅在 CONNECTION 模式使用,设置Connection的数量上限。

上面的bean配置,除了需要注入的几个listener bean以外,其它设置的都是其默认值(2.0.5.RELEASE版本),后面的bean示例配置也是一样,部分属性不同版本的默认值可能有所不同。

一般不用配置这个bean,这里简单提一下。

这个ConnectionFactory是rabbit api中的ConnectionFactory类,这里面是连接rabbitmq节点的Connection配置。

如果想修改这些配置,可以按如下方式配置:

consumer端如果通过@RabbitListener注解的方式接收消息,不需要这个bean。

不建议直接通过ConnectionFactory获取Channel操作rabbitmq,建议通过amqpTemplate操作。

setConnectionFactory :设置spring-amqp的ConnectionFactory。

setRetryTemplate :设置重试机制,详情见后文。

setMessageConverter :设置MessageConverter,用于java对象与Message对象(实际发送和接收的消息对象)之间的相互转换,详情见后文。

setChannelTransacted :打开或关闭Channel的事务,关于amqp的事务后文描述。

setReturnCallback、setConfirmCallback :return和confirm机制的回调接口,后文详述。

setMandatory :设为true使ReturnCallback生效。

这个bean仅在consumer端通过@RabbitListener注解的方式接收消息时使用,每一个@RabbitListener注解的方法都会由这个创建一个MessageListenerContainer,负责接收消息。

setConnectionFactory :设置spring-amqp的ConnectionFactory。

setMessageConverter :对于consumer端,MessageConverter也可以在这里配置。

setAcknowledgeMode :设置consumer端的应答模式,共有三种:NONE、AUTO、MANUAL。

NONE,无应答,这种模式下rabbitmq默认consumer能正确处理所有发出的消息,所以不管消息有没有被consumer收到,有没有正确处理都不会恢复;

AUTO,由Container自动应答,正确处理发出ack信息,处理失败发出nack信息,rabbitmq发出消息后将会等待consumer端的应答,只有收到ack确认信息才会把消息清除掉,收到nack信息的处理办法由setDefaultRequeueRejected()方法设置,所以在这种模式下,发生错误的消息是可以恢复的。

MANUAL,基本同AUTO模式,区别是需要人为调用方法给应答。

setConcurrentConsumers :设置每个MessageListenerContainer将会创建的Consumer的最小数量,默认是1个。

setMaxConcurrentConsumers :设置每个MessageListenerContainer将会创建的Consumer的最大数量,默认等于最小数量。

setPrefetchCount :设置每次请求发送给每个Consumer的消息数量。

setChannelTransacted :设置Channel的事务。

setTxSize :设置事务当中可以处理的消息数量。

setDefaultRequeueRejected :设置当rabbitmq收到nack/reject确认信息时的处理方式,设为true,扔回queue头部,设为false,丢弃。

setErrorHandler :实现ErrorHandler接口设置进去,所有未catch的异常都会由ErrorHandler处理。

AmqpTamplate里面有下面几个方法可以向queue发送消息:

这里,exchange必须存在,否则消息发不出去,会看到错误日志,但不影响程序运行:

Message是org.springframework.amqp.core.Message类,spring-amqp发送和接收的都是这个Message。

从Message类源码可以看到消息内容放在byte[]里面,MessageProperties对象包含了非常多的一些其它信息,如Header、exchange、routing key等。

这种方式,需要将消息内容(String,或其它Object)转换为byte[],示例:

也可以直接调用下面几个方法,Object将会自动转为Message对象发送:

有两种方法接收消息:

1.polling consumer,轮询调用方法一次获取一条;

2.asynchronous consumer,listener异步接收消息。

polling consumer

直接通过AmqpTemplate的方法从queue获取消息,有如下方法:

如果queue里面没有消息,会立刻返回null;传入timeoutMillis参数后可阻塞等待一段时间。

如果想直接从queue获取想要的java对象,可调用下面这一组方法:

后面4个方法是带泛型的,示例如下:

使用这四个方法需要配置org.springframework.amqp.support.converter.SmartMessageConverter,这是一个接口,Jackson2JsonMessageConverter已经实现了这个接口,所以只要将Jackson2JsonMessageConverter设置到RabbitTemplate中即可。

asynchronous consumer

有多种方式可以实现,详情参考官方文档。

最简单的实现方式是@RabbitListener注解,示例:

这里接收消息的对象用的是Message,也可以是自定义的java对象,但调用Converter转换失败会报错。

注解上指定的queue必须是已经存在并且绑定到某个exchange的,否则会报错:

如果在@RabbitListener注解中指明binding信息,就能自动创建queue、exchange并建立binding关系。

direct和topic类型的exchange需要routingKey,示例:

fanout类型的exchange,示例:

2.0版本之后,可以指定多个routingKey,示例:

并且支持arguments属性,可用于headers类型的exchange,示例:

@Queue有两个参数exclusive和autoDelete顺便解释一下:

exclusive,排他队列,只对创建这个queue的Connection可见,Connection关闭queue删除;

autoDelete,没有consumer对这个queue消费时删除。

对于这两种队列,rable=true是不起作用的。

另外,如果注解申明的queue和exchange及binding关系都已经存在,但与已存在的设置不同,比如,已存在的exchange的是direct类型,这里尝试改为fanout类型,结果是不会有任何影响,不论是修改或者新增参数都不会生效。

如果queue存在,exchange存在,但没有binding,那么程序启动后会自动建立起binding关系。

⑷ ubuntu怎么安装rabbitmq

安装RabbitMQ服务软件包
输入以下命令进行安装
#apt install rabbitmq-server

安装完成后在rabbitMQ中添加openstack用户,为后续安装openstack提取做好准备
命令:#rabbitmqctl add_user openstack dick
其中dick为openstack用户登录rabbitMQ服务的密码
同时为openstack用户设置读写等权限
命令:#rabbitmqctl set_permissions openstack ".*" ".*" ".*"

安装RabbitMQ监控管理插件进行RabbitMQ的管理
命令:#rabbitmq-plugins enable rabbitmq_management
插件rabbitmq_management启动成功后就可以通过web页面进行RabbitMQ的监控和管理

使用rabbitmq_management插件进行监控和管理
使用firefox浏览器登录:http://localhost:15672
在登录页面使用 guest/guest用户名和密码登录RabbitMQ管理系统,在系统中可以对RabbitMQ服务进行channel,queue,用户等的管理

安装pika开发RabbitMQ客户端
命令: # pip install pika

⑸ linux下安装rabbitmq报错

1.建议使用rpm包安装
2.相对来说比源码编译方便
3.你源码编译安装,自己没注意或者没加载库,报错了自己都不知道
4.希望可以帮助你,请采纳,谢谢

⑹ 在linux下安装rabbitmq失败怎么解决

RabbitMQ 是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成,因此也是继承了这些优点。
AMQP 里主要要说两个组件:Exchange 和 Queue (在 AMQP 1.0 里还会有变动),如下图所示,绿色的 X 就是 Exchange ,红色的是 Queue ,这两者都在 Server 端,又称作 Broker ,这部分是 RabbitMQ 实现的,而蓝色的则是客户端,通常有 Procer 和 Consumer 两种类型:

1:mq的安装需要Erlang,所以首先下载Erlang,下载地址:http://www.erlang.org/download.html直接下载源码,编译安装即可。
将下载好的tar包解压编译安装,如下命令:
tar -zxvf otp_src_R16B03-1.tar.gz

cd otp_src_R16B03-1
./configure && make install

安装过程中可能出现如下错误:
configure:error:
No curses library functions found
configure: error:/bin/sh'/home/niewf/software/erlang_R13B01/erts/configure'
failed for erts

解决方法:
yum list|grep ncurses
yum -y install ncurses-devel
yum install ncurses-devel

或者直接下载ncurses包编译安装。
下载地址:http://download.chinaunix.net/download/0008000/7242.shtml
tar zxvf ncurses.tar.gz #解压缩并且释放 文件包
cd ncurses #进入解压缩的目录(注意版本)
./configure #按照你的系统环境制作安装配置文件
make #编译源代码并且编译NCURSES库
su root #切换到root用户环境
make install #安装编译好的NCURSES库

完成后继续返回上一步操作。

2:安装python,如果系统中python版本低于2.5的话需要升级python到2.6以上,具体可参考:http://gavinshaw.blog.51cto.com/385947/610585

3:安装simplejson,直接下载simplejson源码包编译安装即可,下载地址:https://pypi.python.org/pypi/simplejson/。
下载simplejson源码包后,运行python setup.py install即可完成安装。

4:安装rabbit mq,下载地址:https://www.rabbitmq.com/install-generic-unix.html
下载后放入相应目录解压,进入%RABBITMQ_HOME%/sbin目录下运行:./rabbitmq-server start即可启动mq。
如果遇到如下错误,则参考http://leeon.me/a/rabbitmq-start-fail-note解决方案
ERROR: epmd error for host "xxx": address (cannot connect to host/port)
到此mq已经安装完成。
在%RABBITMQ_HOME%/sbin目录运行./rabbitmqctl status可查看当前mq状态。
同时mq也提供了界面查看当前mq状态,但是需要启用该插件功能,运行如下命令:
rabbitmq-plugins enable rabbitmq_management,然后在浏览器中输入:http://host-name:15672/#/即可访问,页面结果如下:

⑺ rabbitmq在windows怎么安装

rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统。他遵循Mozilla Public License开源协议。采用 Erlang 实现的工业级的消息队列(MQ)服务器。

AMQP(高级消息队列协议) 是一个异步消息传递所使用的应用层协议规范,作为线路层协议,而不是API(例如JMS),AMQP 客户端能够无视消息的来源任意发送和接受信息。AMQP的原始用途只是为金融界提供一个可以彼此协作的消息协议,而现在的目标则是为通用消息队列架构提供通用构建工具。因此,面向消息的中间件 (MOM)系统,例如发布/订阅队列,没有作为基本元素实现。反而通过发送简化的AMQ实体,用户被赋予了构建例如这些实体的能力。这些实体也是规范的一 部分,形成了在线路层协议顶端的一个层级:AMQP模型。这个模型统一了消息模式,诸如之前提到的发布/订阅,队列,事务以及流数据,并且添加了额外的特性,例如更易于扩展,基于内容的路由。

在Windows上安装Rabbit MQ 指南,最好的是这篇《Rabbit MQ Windows Installation guide》,其中还包括了使用.NET RabbitMQ.Client Nuget 包访问Rabbit MQ的示例代码。

安装Rabbit MQ

Rabbit MQ 是建立在强大的Erlang OTP平台上,因此安装Rabbit MQ的前提是安装Erlang。通过下面两个连接下载安装3.2.3 版本:

下载并安装Eralng OTP For Windows(vR16B03)

运行安装Rabbit MQ Server Windows Installer(v3.2.3)

默认安装的Rabbit MQ 监听端口是5672

激活Rabbit MQ's Management Plugin

使用Rabbit MQ 管理插件,可以更好的可视化方式查看Rabbit MQ 服务器实例的状态,你可以在命令行中使用下面的命令激活:

"C:Program Files (x86)RabbitMQ Server abbitmq_server-3.2.3sbin abbitmq-plugins.bat" enable rabbitmq_management

要重启服务才能生效,可以执行net stop RabbitMQ && net start RabbitMQ

下面我们使用rabbitmqctl控制台命令(位于C:Program Files (x86)RabbitMQ Server abbitmq_server-3.2.3sbin>)来创建用户,密码,绑定权限等。

Microsoft Windows [版本 6.3.9600](c) 2013 Microsoft Corporation。保留所有权利。

c:Program Files (x86)RabbitMQ Server abbitmq_server-3.2.3sbin 的目录

2014/11/01 15:04 <DIR> .

2014/11/01 15:04 <DIR> ..

2014/01/23 22:57 817 rabbitmq-echopid.bat

2014/01/23 22:57 1,900 rabbitmq-plugins.bat

2014/01/23 22:57 4,356 rabbitmq-server.bat

2014/01/23 22:57 7,123 rabbitmq-service.bat

2014/01/23 22:57 1,621 rabbitmqctl.bat

5 个文件 15,817 字节

2 个目录 96,078,618,624 可用字节

c:Program Files (x86)RabbitMQ Server abbitmq_server-3.2.3sbin>rabbitmqctl.ba

t list_users

Listing users ...

guest [administrator]

...done.

c:Program Files (x86)RabbitMQ Server abbitmq_server-3.2.3sbin>rabbitmqctl.ba

t list_vhosts

Listing vhosts ...

/

...done.

c:Program Files (x86)RabbitMQ Server abbitmq_server-3.2.3sbin>rabbitmqctl.ba

t add_user geffzhang zsy@2014

Creating user "geffzhang" ...

...done.

c:Program Files (x86)RabbitMQ Server abbitmq_server-3.2.3sbin>rabbitmqctl.ba

t list_users

Listing users ...

geffzhang []

guest [administrator]

...done.

c:Program Files (x86)RabbitMQ Server abbitmq_server-3.2.3sbin>rabbitmqctl.ba

t set_user_tags geffzhang administrator

Setting tags for user "geffzhang" to [administrator] ...

...done.

c:Program Files (x86)RabbitMQ Server abbitmq_server-3.2.3sbin>rabbitmqctl.ba

t list_users

Listing users ...

geffzhang [administrator]

guest [administrator]

...done.

使用浏览器打开http://localhost:15672访问Rabbit Mq的管理控制台,使用刚才创建的账号登陆系统:

⑻ 怎么在Ubuntu linux系统上安装和使用RabbitMQ

到www dot rabbitmq dot com下载 /releases/rabbitmq-server/v3.6.6/rabbitmq-server_3.6.6-1_all.deb 安装文件,然后在root权限下运行 dpkg -i rabbitmq-server_3.6.6-1_all.deb
或者添加自定义软件源:
echo 'deb http://www.rabbitmq.com/debian/ testing main' |
sudo tee /etc/apt/sources.list.d/rabbitmq.list

添加源的加密公钥
wget -O- https://www.rabbitmq.com/rabbitmq-release-signing-key.asc |
sudo apt-key add -

更新源
sudo apt-get update

通过软件库安装软件
sudo apt-get install rabbitmq-server

⑼ Windows下:RabbitMQ完美安装全流程(亲测有效)

1.确保电脑环境干净,彻底卸载erlang和rabbitmq环境的详细流程

Next

Next -- Install -- Finish

1.运行 -- 输入sysdm.cpl

2.高级 -- 环境变量 -- 新建 -- 在path中配置

1.管理员运行rabbitmq-server-3.8.16.exe

2.Next

1.管理员身份运行命令提示符,cd到rabbitmq安装目录下的sbin文件夹
2.输入rabbitmq-service install
3.输入rabbitmq-service enable 让服务准备就绪
4.输入rabbitmq-service start 启动服务(可能报错,也可能不会)

这时候在本地服务中就可以查看RabbitMQ服务已经在运行

到这里还不够,还有一些需要查看的
5.输入rabbitmqctl status,会有以下报错

6.查了网上的方法,打开RabbitMQ安装目录的sbin文件夹下的rabbitmq-env.bat找到最后面进行如下编辑

set FEATURE_FLAGS_FILE=
set ENABLED_PLUGINS_FILE=
set LOG_BASE=
set MNESIA_BASE=
set PLUGINS_DIR=
set SCRIPT_DIR=
set SCRIPT_NAME=
set TDP0=
set HOMEDRIVE=(填入随便一个文件夹路径)我放在了rabbitmq的安装目录下

10.将.erlang.cookie文件复制到sbin文件夹和目录C:\Windows\System32\config\systemprofile中,保证唯一,重新启动服务,输入rabbitmqctl status 继续报错

打开浏览器,输入http://127.0.0.1:15672/ ,默认用户名密码都是guest,即可登录。

阅读全文

与源码包安装rabbitmq相关的资料

热点内容
手机云视频加密怎么关 浏览:72
北京文件夹加密多少钱 浏览:671
什么是车鉴定app 浏览:66
战地一私人服务器怎么买 浏览:497
陈天程序员 浏览:833
编译原理如何运用到编程中 浏览:17
linux选择数据库 浏览:376
php两个数组差集 浏览:978
迷你pdf阅读器下载 浏览:433
做一个python小程序 浏览:655
pythonossystem和 浏览:645
win2008如何搭建ftp服务器 浏览:53
安卓手机为什么不翻牌 浏览:546
删除pkpm及相关文件夹 浏览:481
房贷解压银行内部流程 浏览:734
安卓手机如何更改语音 浏览:601
android红包实现 浏览:734
苹果的nvme为什么安卓不用 浏览:32
python输入单词统计个数 浏览:998
脚本软件提取源码 浏览:281