【问题标题】:RabbitMQ: Unable to enable rabbitmq-priority-queue plugin particularly, but why?RabbitMQ:无法特别启用rabbitmq-priority-queue插件,但为什么呢?
【发布时间】:2014-12-29 03:05:11
【问题描述】:

我在工作地点的 CentOS 6.4 机器上从 RPM 安装了 RabbitMQ。 我能够启用rabbitmq_management 插件,当我运行rabbitmqctl status 时,我得到了这个:

[root@p39dev-reportservice01 ~]# rabbitmqctl  status
Status of node 'rabbit@p39dev-reportservice01' ...
[{pid,11221},
 {running_applications,
     [{rabbitmq_management,"RabbitMQ Management Console","3.4.1"},
      {rabbitmq_management_agent,"RabbitMQ Management Agent","3.4.1"},
      {rabbit,"RabbitMQ","3.4.1"},
      {mnesia,"MNESIA  CXC 138 12","4.5"},
      {os_mon,"CPO  CXC 138 46","2.2.7"},
      {rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.4.1"},
      {webmachine,"webmachine","1.10.3-rmq3.4.1-gite9359c7"},
      {mochiweb,"MochiMedia Web Server","2.7.0-rmq3.4.1-git680dba8"},
      {amqp_client,"RabbitMQ AMQP Client","3.4.1"},
      {xmerl,"XML parser","1.2.10"},
      {inets,"INETS  CXC 138 49","5.7.1"},
      {sasl,"SASL  CXC 138 11","2.1.10"},
      {stdlib,"ERTS  CXC 138 10","1.17.5"},
      {kernel,"ERTS  CXC 138 10","2.14.5"}]},
 {os,{unix,linux}},
 {erlang_version,
     "Erlang R14B04 (erts-5.8.5) [source] [64-bit] [smp:4:4] [rq:4] [async-threads:30] [kernel-poll:true]\n"},
 {memory,
     [{total,31534688},
      {connection_readers,0},
      {connection_writers,0},
      {connection_channels,0},
      {connection_other,5408},
      {queue_procs,2704},
      {queue_slave_procs,0},
      {plugins,290736},
      {other_proc,9278088},
      {mnesia,60768},
      {mgmt_db,57944},
      {msg_index,46864},
      {other_ets,1100576},
      {binary,10728},
      {code,17196379},
      {atom,1547225},
      {other_system,1937268}]},
 {alarms,[]},
 {listeners,[{clustering,25672,"::"},{amqp,5672,"::"}]},
 {vm_memory_high_watermark,0.4},
 {vm_memory_limit,1607422771},
 {disk_free_limit,50000000},
 {disk_free,39843336192},
 {file_descriptors,
     [{total_limit,924},{total_used,3},{sockets_limit,829},{sockets_used,1}]},
 {processes,[{limit,1048576},{used,177}]},
 {run_queue,0},
 {uptime,140}]
[root@p39dev-reportservice01 ~]# 

这是我第一次安装这个 RabbitMQ 并且看起来运行正常。

当我尝试启用另一个名为 rabbitmq_priority_queue 的插件时,问题就开始了,这是我公司的开发团队所需要的:

[root@p39dev-reportservice01 ~]# rabbitmq-plugins enable --online rabbitmq_priority_queue
The following plugins have been enabled:
  rabbitmq_priority_queue

Applying plugin configuration to rabbit@p39dev-reportservice01... failed.
Error: {"no such file or directory","rabbitmq_priority_queue.app"}
[root@p39dev-reportservice01 ~]#

我尝试了很多不同的方法,包括从源代码安装 erlangrabbitmq-server,我尝试启用其他插件并让它们工作......只有这个特定的插件不起作用。

如果我在系统中查找*priority_queue,我可以找到下一个文件,所以它看起来确实已经安装:

/usr/lib/rabbitmq/lib/rabbitmq_server-3.4.1/ebin/priority_queue.beam
/usr/lib/rabbitmq/lib/rabbitmq_server-3.4.1/plugins/rabbitmq_priority_queue-3.4.x-3431dc1e.ez
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-erlang-client/deps/rabbit_common-0.0.0/ebin/priority_queue.beam
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-erlang-client/dist/rabbit_common-0.0.0/ebin/priority_queue.beam
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-priority-queue/build/rabbitmq_priority_queue.app.0.0.0
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-priority-queue/build/app/rabbitmq_priority_queue-0.0.0
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-priority-queue/build/app/rabbitmq_priority_queue-0.0.0/ebin
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-priority-queue/build/app/rabbitmq_priority_queue-0.0.0/include
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-priority-queue/build/app/rabbitmq_priority_queue-0.0.0/ebin/rabbit_priority_queue.beam
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-priority-queue/build/app/rabbitmq_priority_queue-0.0.0/ebin/rabbitmq_priority_queue.app
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-priority-queue/build/dep-apps/rabbit_common-0.0.0/ebin/priority_queue.beam
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-priority-queue/dist/rabbitmq_priority_queue-0.0.0.ez
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-priority-queue/ebin/rabbit_priority_queue.beam
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-priority-queue/ebin/rabbitmq_priority_queue.app
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-priority-queue/src/rabbit_priority_queue.erl
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-priority-queue/src/rabbitmq_priority_queue.app.src
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-priority-queue/test/src/rabbit_priority_queue_test.erl
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-server/ebin/priority_queue.beam
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-server/src/priority_queue.erl
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-stomp/build/dep-apps/rabbit_common-0.0.0/ebin/priority_queue.beam
/var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-test/build/dep-apps/rabbit_common-0.0.0/ebin/priority_queue.beam

那么为什么服务器找不到这个文件呢?或者它期望文件在哪里?

编辑#1: 我也试过这个:

[root@p39dev-reportservice01 rabbitmq-priority-queue]# rabbitmq-plugins enable --offline rabbitmq_priority_queue
Plugin configuration unchanged.
[root@p39dev-reportservice01 rabbitmq-priority-queue]# rabbitmqctl stop_app & rabbitmqctl start_app
[1] 12190
Stopping node 'rabbit@p39dev-reportservice01' ...
Starting node 'rabbit@p39dev-reportservice01' ...
[1]+  Done                    rabbitmqctl stop_app
[root@p39dev-reportservice01 rabbitmq-priority-queue]# rabbitmqctl status
Status of node 'rabbit@p39dev-reportservice01' ...
[{pid,11221},
 {running_applications,[{xmerl,"XML parser","1.2.10"},
                        {inets,"INETS  CXC 138 49","5.7.1"},
                        {sasl,"SASL  CXC 138 11","2.1.10"},
                        {stdlib,"ERTS  CXC 138 10","1.17.5"},
                        {kernel,"ERTS  CXC 138 10","2.14.5"}]},
 {os,{unix,linux}},
 {erlang_version,"Erlang R14B04 (erts-5.8.5) [source] [64-bit] [smp:4:4] [rq:4] [async-threads:30] [kernel-poll:true]\n"},
 {memory,[{total,30807688},
          {connection_readers,0},
          {connection_writers,0},
          {connection_channels,0},
          {connection_other,0},
          {queue_procs,0},
          {queue_slave_procs,0},
          {plugins,0},
          {other_proc,9193816},
          {mnesia,0},
          {mgmt_db,0},
          {msg_index,0},
          {other_ets,927744},
          {binary,4424},
          {code,17196379},
          {atom,1547225},
          {other_system,1938100}]},
 {alarms,[]},
 {listeners,[]},
 {processes,[{limit,1048576},{used,58}]},
 {run_queue,0},
 {uptime,2527}]

现在rabbitmqctl status 没有显示启用了哪些插件,所以我怀疑它没有正确加载...

编辑#2: 好的,这里是:

[root@p39dev-reportservice01 rabbitmq-priority-queue]# rabbitmqctl stop_app & rabbitmqctl start_app
[1] 12411
Starting node 'rabbit@p39dev-reportservice01' ...
Stopping node 'rabbit@p39dev-reportservice01' ...


BOOT FAILED
===========

Error description:
   {error,{"no such file or directory","rabbitmq_priority_queue.app"}}

Log files (may contain more information):
   /var/log/rabbitmq/rabbit@p39dev-reportservice01.log
   /var/log/rabbitmq/rabbit@p39dev-reportservice01-sasl.log

Stack trace:
   [{app_utils,load_applications,2},
    {app_utils,load_applications,1},
    {rabbit,start_apps,1},
    {rabbit,broker_start,0},
    {rabbit,start_it,1},
    {rpc,'-handle_call_call/6-fun-0-',5}]

Error: {rabbit,failure_during_boot,
               {error,{"no such file or directory",
                       "rabbitmq_priority_queue.app"}}}
[1]+  Done                    rabbitmqctl stop_app
[root@p39dev-reportservice01 rabbitmq-priority-queue]# 

仍然给我同样的错误...

【问题讨论】:

    标签: erlang centos rabbitmq priority-queue


    【解决方案1】:

    按照接下来的安装步骤解决了我的问题:

    yum install -y epel-release
    yum install -y erlang
    wget http://www.rabbitmq.com/releases/rabbitmq-server/v3.4.1/rabbitmq-server-3.4.1-1.noarch.rpm
    rpm -ivh rabbitmq-server-3.4.1-1.noarch.rpm 
    rabbitmqctl status
    cd /var/lib/rabbitmq/
    yum install -y -y mercurial-1.4-3.el6.x86_64 git
    hg clone http://hg.rabbitmq.com/rabbitmq-public-umbrella
    cd rabbitmq-public-umbrella/ && make co
    cd rabbitmq-management && make
    rabbitmq-plugins enable rabbitmq_management
    cd .. && git clone https://github.com/rabbitmq/rabbitmq-priority-queue
    cd rabbitmq-priority-queue/ && make
    cp /var/lib/rabbitmq/rabbitmq-public-umbrella/rabbitmq-priority-queue/dist/rabbitmq_priority_queue-0.0.0.ez /usr/lib/rabbitmq/lib/rabbitmq_server-3.4.1/plugins/
    rabbitmq-plugins enable --offline rabbitmq_priority_queue
    /etc/init.d/rabbitmq-server restart
    

    【讨论】:

      【解决方案2】:

      也许你可以尝试在离线模式下安装插件

      rabbitmq-plugins enable --offline rabbitmq_priority_queue
      

      然后重启你的rabbitmq节点:

      rabbitmq-ctl stop_app && rabbitmq-ctl start_app
      

      【讨论】:

      • 我已经尝试过了,抱歉没有提及,请查看编辑#1。
      • 我猜它来自“插件配置不变”。
      • 不错不错。这很奇怪,由 simonmcmullen 创建的包没有版本(0.0.0)
      • 很抱歉,它仍然不起作用,请检查编辑#2,谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-04
      • 2020-02-19
      • 1970-01-01
      • 2015-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多