我试图在运行Rabbitmq 3.4.0的ubuntu 12.04机器上安装rabbitmq-priority-queue

根据http://www.rabbitmq.com/installing-plugins.html中的说明,我已将下载的文件Rabbitmq_priority_queue-3.4.x-3431dc1e.ez复制到/usr/lib/rabbitmq/lib/rabbitmq_server-3.4.0/plugins
并通过命令启用了插件:

$ sudo rabbitmq-plugins enable rabbitmq_priority_queue


https://github.com/rabbitmq/rabbitmq-priority-queue/blob/master/examples/java/src/com/rabbitmq/examples/PriorityQueue.java中运行示例应用程序时
我得到以下输出:

Sent message with priority 0
Sent message with priority 5
Sent message with priority 10
Received message with priority 0
Received message with priority 5
Received message with priority 10


尽管我期望输出为:

Sent message with priority 0
Sent message with priority 5
Sent message with priority 10
Received message with priority 10
Received message with priority 5
Received message with priority 0


这意味着,首先使用优先级最高的消息。

我尝试执行以下操作(无用):


重新开始的兔子
禁用-启用插件
删除了队列(因此​​它将由应用程序重新创建)
将.ez文件权限更改为-rw-r--r-(就像所有其他插件一样)


我注意到启用插件时,我得到以下输出:

$ sudo rabbitmq-plugins enable rabbitmq_priority_queue
The following plugins have been enabled:
  rabbitmq_priority_queue

Applying plugin configuration to rabbit@<my laptop name>...WARNING: module rabbit_priority_queue not found, so not scanned for boot steps.
WARNING: module rabbit_priority_queue not found, so not scanned for boot steps.
 started 1 plugin.


但是当运行'sudo rabbitmq-plugins list'时,我得到:

$ sudo rabbitmq-plugins list
 Configured: E = explicitly enabled; e = implicitly enabled
 | Status:   * = running on rabbit@benny-laptop
 |/
[e*] amqp_client                       3.4.0
[  ] cowboy                            0.5.0-rmq3.4.0-git4b93c2d
[  ] eldap                             3.4.0-gite309de4
[e*] mochiweb                          2.7.0-rmq3.4.0-git680dba8
[  ] rabbitmq_amqp1_0                  3.4.0
[  ] rabbitmq_auth_backend_ldap        3.4.0
[  ] rabbitmq_auth_mechanism_ssl       3.4.0
[  ] rabbitmq_consistent_hash_exchange 3.4.0
[  ] rabbitmq_federation               3.4.0
[  ] rabbitmq_federation_management    3.4.0
[E*] rabbitmq_management               3.4.0
[e*] rabbitmq_management_agent         3.4.0
[  ] rabbitmq_management_visualiser    3.4.0
[  ] rabbitmq_mqtt                     3.4.0
[E*] rabbitmq_priority_queue           3.4.x-3431dc1e
[  ] rabbitmq_shovel                   3.4.0
[  ] rabbitmq_shovel_management        3.4.0
[  ] rabbitmq_stomp                    3.4.0
[  ] rabbitmq_test                     3.4.0
[  ] rabbitmq_tracing                  3.4.0
[e*] rabbitmq_web_dispatch             3.4.0
[  ] rabbitmq_web_stomp                3.4.0
[  ] rabbitmq_web_stomp_examples       3.4.0
[  ] sockjs                            0.3.4-rmq3.4.0-git3132eb9
[e*] webmachine                        1.10.3-rmq3.4.0-gite9359c7


根据结果​​[E *],看来插件已启用。
我不确定插件是否已正确启用,或者我可能无法正确理解。请指教。

最佳答案

啊。是。该“找不到模块”错误消息是误导的。网站上提供的优先级队列插件的二进制版本是使用Erlang R15B编译的,而Ubuntu随附的Erlang版本是R14B04。所以我认为这是问题的根源。

您可以升级Erlang(Erlang Solutions从here为12.04提供R16B的反向端口)或自己编译插件(不适合胆怯的人使用)。

同时,我将看看如何获​​得错误消息,以说出更明智的内容。

08-18 12:10
查看更多