我尝试安装rabbitmq-priority-queue在我运行rabbitmq 3.4.0的ubuntu 12.04机器上。
根据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.
但是当运行“sudorabbitmq-pluginslist”时我得到:
$ 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 解决方案从 here 为 12.04 提供 R16B 向后移植)或自己编译插件(不适合胆小的人)。
同时,我将研究如何获取错误消息,以表达更明智的内容。
关于java - rabbitmq-priority-queue插件安装问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26654062/