java - rabbitmq-priority-queue插件安装问题

标签 java rabbitmq priority-queue amqp

我尝试安装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/

相关文章:

java - 带有 PriorityBlockingQueue 的 NullPointerException

java - 如何在 PriorityQueue 中找到项目的索引? ( java )

Android自定义来电接听应用

java - x 实例的 JPA 标识符已更改

javax.net.ssl.SSLPeerUnverifiedException : Hostname not verified:

python - 如何从 rabbitMQ 中永久删除 celery 任务?

rabbitmq - Rabbit MQ 过滤

java - java中按长度分割字符串

java - eclipse for java 中没有语法高亮显示

sbt - Apache Flink RabbitMq SBT 依赖失败