如何在 Linux 上安装 RabbitMQ 服务器和 Erlang

举报
Tiamo_T 发表于 2022/08/03 08:44:19 2022/08/03
【摘要】 RabbitMQ 是一个开源消息队列服务器,您可以使用它来构建您的消息传递应用程序。简单来说,您可以将消息从一个应用程序放入队列,并从同一应用程序或不同应用程序的队列中检索消息。您可以使用多种编程语言连接到 RabbitMQ,创建和检索消息。

RabbitMQ 是一个开源消息队列服务器,您可以使用它来构建您的消息传递应用程序。简单来说,您可以将消息从一个应用程序放入队列,并从同一应用程序或不同应用程序的队列中检索消息。您可以使用多种编程语言连接到 RabbitMQ,创建和检索消息。

安装Erlang

要使 RabbitMQ 正常工作,您需要在系统上安装 Erlang。

目前 Erlang 的稳定版本是 R16B,可以从Erlang网站下载。

cd /usr/save
wget http://www.erlang.org/download/otp_src_R16B.tar.gz
tar xvfz /usr/save/otp_src_R16B.tar.gz

下载 Erlang 后,从源代码安装 Erlang R16B 版本,如下所示。

cd otp_src_R16B
LANG=C; export LANG
./configure
make
make install

验证Erlang

现在,当你从命令行输入 erl 时,你应该得到如下所示的 Erlang Shell。这表明您已经成功安装了 Erlang。

# erl
Erlang R16B (erts-5.10.1) [source] [smp:4:4] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V5.10.1  (abort with ^G)
1>
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
       (v)ersion (k)ill (D)b-tables (d)istribution
a

下载 RabbitMQ

目前 RabbitMQ 服务器的稳定版本是 3.0.4。当您访问RabbitMQ网站时,您会看到以下 Linux 平台可供下载的版本:1) Debian / Ubuntu 2) Fedora / RHEL 3) Generic Unix 4) Solaris

在这个例子中,我为Generic Unix选择了 RabbitMQ 。


cd /usr/save
wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.0.4/rabbitmq-server-generic-unix-3.0.4.tar.gz
tar xvfz rabbitmq-server-generic-unix-3.0.4.tar.gz
cd rabbitmq_server-3.0.4

启动 RabbitMQ 服务器

通过传递 -detached 选项启动 RabbitMQ 服务器,如下所示。

# cd /usr/save/rabbitmq_server-3.0.4
# sbin/rabbitmq-server -detached
Warning: PID file not written; -detached was passed.

如果您在启动 RabbitMQ 服务器时收到 could_not_start_tcp_listener 错误消息,请参阅下面的故障排除部分以获取有关如何解决此问题的解决方案。

验证 RabbitMQ 状态

使用 rabbitmqctl 命令来验证 RabbitMQ 服务器的状态并在需要时停止它。

# sbin/rabbitmqctl status
Status of node 'rabbit@db-dev' ...
[{pid,30069},
{running_applications,[{rabbit,"RabbitMQ","3.0.4"},
                        {mnesia,"MNESIA  CXC 138 12","4.8"},
                        {os_mon,"CPO  CXC 138 46","2.2.11"},
                        {sasl,"SASL  CXC 138 11","2.3.1"},
                        {stdlib,"ERTS  CXC 138 10","1.19.1"},
                        {kernel,"ERTS  CXC 138 10","2.16.1"}]},
{os,{unix,linux}},
{erlang_version,"Erlang R16B (erts-5.10.1) [source] [smp:4:4] [async-threads:30] [hipe] [kernel-poll:true]\n"},
{memory,[{total,15087368},
          {connection_procs,1432},
          {queue_procs,2864},
          {plugins,0},
          {other_proc,4748681},
          {mnesia,30672},
          {mgmt_db,0},
          {msg_index,8652},
          {other_ets,369668},
          {binary,5976},
          {code,6973062},
          {atom,387397},
          {other_system,2558964}]},
{vm_memory_high_watermark,0.4},
{vm_memory_limit,1699810508},
{disk_free_limit,1000000000},
{disk_free,913096704},
{file_descriptors,[{total_limit,924},
                    {total_used,3},
                    {sockets_limit,829},
                    {sockets_used,1}]},
{processes,[{limit,1048576},{used,124}]},
{run_queue,0},
{uptime,6}]
...done.

要停止 RabbitMQ 服务器,请使用 rabbitmqctl 命令,如下所示。

# sbin/rabbitmqctl stop

故障排除

问题:在 CentOS 6 上,如果您使用 yum 安装 rabbitmq,或者如上所述从源安装,并且如果您收到“BOOT FAILED { could_not_start_tcp_listener ,{“::”,5672}}”消息,您可能有端口冲突问题。

解决方案:在 CentOS 6 上默认安装的 Matahari 包也运行在 5672 端口上。此过程默认启动。尝试停止 qpidd(Qpid AMQP 守护程序),看看它是否能解决问题。如果不需要 Matahari,也可以卸载 matahari、matahari-broker、qpid-cpp-server-ssl 和 qpid-cpp-server 包。

停止 qpidd 守护进程,并使用 chkconfig 命令从系统启动中禁用它。

# chkconfig --list | grep -i qpid
qpidd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

# service qpidd stop
Stopping Qpid AMQP daemon:                                 [  OK  ]

# chkconfig qpidd off

# chkconfig --list | grep -i qpid
qpidd           0:off   1:off   2:off   3:off   4:off   5:off   6:off

现在,如果你启动 RabbitMQ 服务器,它应该可以工作了。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。