导航:首页 > 操作系统 > linuxrabbitmq安装

linuxrabbitmq安装

发布时间:2023-08-24 05:20:48

A. 在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/#/即可访问,页面结果如下:

B. 怎么在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

C. linux怎么安装rabbitmq

RabbitMQ 安装
# Install from EPEL
[root@vdevops~]# yum --enablerepo=epel -y install rabbitmq-server
[root@vdevops~]# systemctl start rabbitmq-server
[root@vdevops /]# journalctl -xe
Nov 12 01:30:01 vdevops.org CROND[3856]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: DIAGNOSTICS
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: ===========
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: attempted to contact: [rabbit@vdevops]
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: rabbit@vdevops:
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: * unable to connect to epmd (port 4369) on vdevops: timeout (timed out)
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: current node details:
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: - node name: rabbitmqctl3831@vdevops
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: - home dir: /var/lib/rabbitmq
Nov 12 01:30:04 vdevops.org rabbitmqctl[3831]: - cookie hash: s++dDMtIhAufFItw+ercBw==
Nov 12 01:30:04 vdevops.org polkitd[1007]: Unregistered Authentication Agent for unix-process:3798:36632 (system bus name :1.23, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected f
Nov 12 01:30:04 vdevops.org systemd[1]: rabbitmq-server.service: control process exited, code=exited status=2
Nov 12 01:30:04 vdevops.org systemd[1]: Failed to start RabbitMQ broker.
-- Subject: Unit rabbitmq-server.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit rabbitmq-server.service has failed.
--
-- The result is failed.
Nov 12 01:30:04 vdevops.org systemd[1]: Unit rabbitmq-server.service entered failed state.
Nov 12 01:30:04 vdevops.org systemd[1]: rabbitmq-server.service failed.
Nov 12 01:30:42 vdevops.org systemd[1]: Got automount request for /proc/sys/fs/binfmt_misc, triggered by 3860 (find)
Nov 12 01:30:42 vdevops.org systemd[1]: Mounting Arbitrary Executable File Formats File System...
-- Subject: Unit proc-sys-fs-binfmt_misc.mount has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit proc-sys-fs-binfmt_misc.mount has begun starting up.
Nov 12 01:30:42 vdevops.org systemd[1]: Mounted Arbitrary Executable File Formats File System.
-- Subject: Unit proc-sys-fs-binfmt_misc.mount has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit proc-sys-fs-binfmt_misc.mount has finished starting up.
--
-- The start-up result is done.

rabbitmq-server启动报错:Failed to start RabbitMQ broker

度娘解析:主机hostname配置错误,原本hostname为vdevops.org,更改为vdevops,修改hosts文件中hostname设置
[root@vdevops /]# hostnamectl set-hostname vdevops # hostname更改重启启动rabbitmq-server
[root@vdevops /]# systemctl status rabbitmq-server
● rabbitmq-server.service - RabbitMQ broker
Loaded: loaded (/usr/lib/systemd/system/rabbitmq-server.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2016-11-12 01:32:41 CST; 3min 58s ago
Process: 3831 ExecStop=/usr/lib/rabbitmq/bin/rabbitmqctl stop (code=exited, status=2)
Main PID: 3891 (beam)
CGroup: /system.slice/rabbitmq-server.service
├─3891 /usr/lib64/erlang/erts-5.10.4/bin/beam -W w -K true -A30 -P 1048576 -- -root /usr/lib64/erlang -progname erl -- -home /var/lib/rabbitmq -- -pa /usr/lib/rabbitmq/lib/rabbitmq_server-3.3.5/sbin/../ebin -nos...
├─3908 /usr/lib64/erlang/erts-5.10.4/bin/epmd -daemon
├─3963 inet_gethost 4
└─3964 inet_gethost 4

Nov 12 01:32:39 vdevops systemd[1]: Starting RabbitMQ broker...
Nov 12 01:32:39 vdevops systemd[1]: rabbitmq-server.service: Got notification message from PID 3908, but reception only permitted for main PID 3891
Nov 12 01:32:40 vdevops rabbitmq-server[3891]: RabbitMQ 3.3.5. Copyright (C) 2007-2014 GoPivotal, Inc.
Nov 12 01:32:40 vdevops rabbitmq-server[3891]: ## ## Licensed under the MPL. See http://www.rabbitmq.com/
Nov 12 01:32:40 vdevops rabbitmq-server[3891]: ## ##
Nov 12 01:32:40 vdevops rabbitmq-server[3891]: ########## Logs: /var/log/rabbitmq/[email protected]
Nov 12 01:32:40 vdevops rabbitmq-server[3891]: ###### ## /var/log/rabbitmq/[email protected]
Nov 12 01:32:40 vdevops rabbitmq-server[3891]: ##########
Nov 12 01:32:41 vdevops systemd[1]: Started RabbitMQ broker.
Nov 12 01:32:41 vdevops rabbitmq-server[3891]: Starting broker... completed with 0 plugins.
[root@vdevops~]# systemctl enable rabbitmq-server
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.

防火墙设置
[root@linuxprobe~]# firewall-cmd --add-port=5672/tcp --permanent
success
[root@linuxprobe~]# firewall-cmd --reload
success

要使用RabbitMQ,请先添加用户
[root@vdevops ~]# rabbitmqctl add_user linuxprobe password
Creating user "linuxprobe" ...
...done.
[root@vdevops ~]# rabbitmqctl list_users
Listing users ...
guest [administrator]
linuxprobe []
...done.
# granting admin role to a user is like follows
[root@vdevops ~]# rabbitmqctl change_password linuxprobe strongpassword
Changing password for user "linuxprobe" ...
...done.
# granting admin role to a user is like follows
[root@vdevops ~]# rabbitmqctl set_user_tags linuxprobe administrator
Setting tags for user "linuxprobe" to [administrator] ...
...done.
# deleting a user is like follows
[root@vdevops ~]# rabbitmqctl delete_user linuxprobe
Deleting user "linuxprobe " ...
...done.

要使用RabbitMQ,也要添加虚拟主机
[root@vdevops ~]# rabbitmqctl add_vhost /my_vhost
Creating vhost "/my_vhost" ...
...done.
[root@vdevops ~]# rabbitmqctl list_vhosts
Listing vhosts ...
/
/my_vhost
...done.
[root@vdevops ~]# rabbitmqctl delete_vhost /my_vhost
Deleting vhost "/my_vhost" ...
...done.

给虚拟主机的用户授予权限,请如下配置
# rabbitmqctl set_permissions [-p vhost] [user] [permission ? (modify) (write) (read)]
[root@vdevops ~]# rabbitmqctl set_permissions -p /my_vhost linuxprobe ".*" ".*" ".*"
Setting permissions for user "linuxprobe" in vhost "/my_vhost" ...
...done.
#
[root@vdevops ~]# rabbitmqctl list_user_permissions linuxprobe
Listing permissions for user "linuxprobe" ...
/my_vhost .* .* .*
...done.
# deleting permission of a specific user is like follows
[root@vdevops ~]# rabbitmqctl clear_permissions -p /my_vhost linuxprobe
Clearing permissions for user "linuxprobe" in vhost "/my_vhost" ...
...done.

RabbitMQ:使用Web UI
[root@vdevops ~]# rabbitmq-plugins enable rabbitmq_management
The following plugins have been enabled:
mochiweb
webmachine
rabbitmq_web_dispatch
amqp_client
rabbitmq_management_agent
rabbitmq_management
Plugin configuration has changed. Restart RabbitMQ for changes to take effect.
[root@vdevops ~]# systemctl restart rabbitmq-server

客户端访问

http://vdevops:15672/

rabbitmqadmin使用

可以配置RabbitMQ使用rabbitmqadmin命

在Web UI上下载rabbitmqadmin。 登录到Web UI并移动到“http://(主机名或IP地址):15672 /
cli”,然后显示以下屏幕,您可以在这里下载rabbitmqadmin,点击here右键保存rabbitmqadmin.txt,然后上传到服务器上面更改为rabbitmqadmin,并添加执行权限

将rabbitmqadmin上传到RabbitMQ服务器并设置合适的权限,此示例显示如下设置
[root@localhost ~]# ll /usr/local/bin/rabbitmqadmin
-rwxr-xr-x. 1 root root 36112 Nov 11 17:23 /usr/local/bin/rabbitmqadmin
[root@vdevops bin]# rabbitmqadmin list users
+------------+------------------------------+---------------+
| name | password_hash | tags |
+------------+------------------------------+---------------+
| guest | k2rhpzCrZBKkY5WRhUWrGm5DCkg= | administrator |
| linuxprobe | P+YxK1QXIYrJpek5i//rPjn5SME= | administrator |
+------------+------------------------------+---------------+
[root@vdevops bin]# cd
[root@vdevops ~]# rabbitmqadmin list users
+------------+------------------------------+---------------+
| name | password_hash | tags |
+------------+------------------------------+---------------+
| guest | k2rhpzCrZBKkY5WRhUWrGm5DCkg= | administrator |
| linuxprobe | P+YxK1QXIYrJpek5i//rPjn5SME= | administrator |
+------------+------------------------------+---------------+
[root@vdevops ~]# rabbitmqadmin list vhosts
+-----------+---------+
| name | tracing |
+-----------+---------+
| / | False |
| /my_vhost | False |
+-----------+---------+

详细可以参考http://www.linuxprobe.com/centos-deploy-rabbitmq.html

D. RabbitMQ 进阶- 阿里云服务器部署RabbitMQ集群

如果RabbitMQ集群只有一个broker节点,那么该节点的失效将导致整个服务临时性的不可用,并且可能会导致message的丢失(尤其是在非持久化message存储于非持久化queue中的时候)。可以将所有message都设置为持久化,并且使用持久化的queue,但是这样仍然无法避免由于缓存导致的问题:因为message在发送之后和被写入磁盘并执行fsync之间存在一个虽然短暂但是会产生问题的时间窗。通过publisher的confirm机制能够确保客户端知道哪些message已经存入磁盘,尽管如此,一般不希望遇到因单点故障导致服务不可用。

如果RabbitMQ集群是由多个broker节点构成的,那么从服务的整体可用性上来讲,该集群对于单点失效是有弹性的,但是同时也需要注意:尽管exchange和binding能够在单点失效问题上幸免于难,但是queue和其上持有的message却不行,这是因为queue及其内容仅仅存储于单个节点之上,所以一个节点的失效表现为其对应的queue不可用。

为了提高程序的吞吐量,保持消息的可靠性,一台机器挂了后,RabbitMQ能够正常生产,消费消息。

rabbitmq有三种模式:单机模式,普通集群模式,镜像集群模式

Demo级别的,一般只是本机测试玩玩而已,生产环境下不会用的。

在多台机器上启动多个rabbitmq实例,每个机器启动一个。
但是你创建的queue,只会放在一个rabbtimq实例上,但是每个实例都同步queue的元数据(存放含queue数据的真正实例位置)。消费的时候,实际上如果连接到了另外一个实例,那么那个实例会从queue所在实例上拉取数据过来。

示意图

这种方式确实很麻烦,也不怎么好,没做到所谓的分布式,就是个普通集群。
普通集群的方式,确实达到了消息的高可用,但没办法保证可靠性,没做到分布式,简而言之,只是一个普通的集群。

这种模式,才是所谓的rabbitmq的高可用模式,跟普通集群模式不一样的是,你创建的queue,无论元数据还是queue里的消息都会存在于多个实例上,然后每次你写消息到queue的时候,都会自动把消息到多个实例的queue里进行消息同步。

上图中每个节点有一个queue,生产者生产完毕数据后投递到指定交换机的队列,交换机的队列进行消息同步。

每个节点queue都有一个完整的rabbitmq节点,所以这种方式叫做镜像集群

好处: 任何一个节点宕机后,其它节点不受影响,正常使用

坏处:

确保机器中安装了Docker,若未安装,可看:【云原生】Docker入门 – 阿里云服务器Linux环境下安装Docker

查看拉取的镜像

成功运行

设置节点1

浏览器输入 您的ip地址:15673

再次测试即可成功~

File —> New —> Project —> Maven —> 直接Next 进入下一步创建普通的Maven工程即可

创建一个默认的Maven聚合工程,将src文件夹删除,该工程就是一个Maven聚合工程

引入依赖如下:

在项目内,新建一个Moudle,rabbitmq-order-procer 默认Maven工程,下一步即可

在项目内,新建一个Moudle,rabbitmq-order-cousumer 默认Maven工程,下一步即可

Maven聚合工程创建完成图

Maven依赖图

自行手写MainApplication即可

创建完成!

编写完成!

启动消费者

交换机

=

15674

15675

成功消费数据!

已成功同步消息~

阅读全文

与linuxrabbitmq安装相关的资料

热点内容
潭州学院python 浏览:814
下载文件夹不用卸载 浏览:233
怎样删除手机内不用的英文文件夹 浏览:81
android获得屏幕宽度 浏览:302
单片机根据波形写代码 浏览:669
应届生程序员怎么投简历 浏览:721
数学建模算法与应用ppt 浏览:99
远程怎么访问端游服务器 浏览:106
打电话定位置的源码 浏览:642
即时通讯平台源码 浏览:457
安卓自助app怎么转到苹果手机 浏览:328
雅马哈回音壁不能识别源码 浏览:730
python如何移植到安卓 浏览:29
黄柱选股公式源码 浏览:639
教育系统源码达标 浏览:888
声卡驱动安装程序在哪个文件夹 浏览:62
钱还完了银行不给解压 浏览:171
linux的系统调用表 浏览:754
php怎么转换页面 浏览:548
我的世界买了服务器之后怎么开服 浏览:830