我在 Linux 上安装了 RabbitMQ,它是一个很棒的软件。
当我运行这个命令时:
sudo rabbitmqctl status
Run Code Online (Sandbox Code Playgroud)
我得到一团糟的输出:
[{pid,18665},
{running_applications,
[{rabbitmq_management,"RabbitMQ Management Console","3.1.5"},
{rabbitmq_web_dispatch,"RabbitMQ Web Dispatcher","3.1.5"},
{webmachine,"webmachine","1.10.3-rmq3.1.5-gite9359c7"},
{mochiweb,"MochiMedia Web Server","2.7.0-rmq3.1.5-git680dba8"},
{rabbitmq_management_agent,"RabbitMQ Management Agent","3.1.5"},
{rabbit,"RabbitMQ","3.1.5"},
{os_mon,"CPO CXC 138 46","2.2.7"},
{inets,"INETS CXC 138 49","5.7.1"},
{xmerl,"XML parser","1.2.10"},
{mnesia,"MNESIA CXC 138 12","4.5"},
{amqp_client,"RabbitMQ AMQP Client","3.1.5"},
{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] [rq:1] [async-threads:30] [kernel-poll:true]\n"},
{memory,
[{total,179426464},
{connection_procs,300224},
{queue_procs,14434024},
{plugins,474968},
{other_proc,9607952},
{mnesia,89264},
{mgmt_db,1539936},
{msg_index,85175152},
{other_ets,29060560},
{binary,18243208},
{code,17504466},
{atom,1602617},
{other_system,1394093}]},
{vm_memory_high_watermark,0.4},
{vm_memory_limit,1522479923}, …Run Code Online (Sandbox Code Playgroud) 使用“ rabbitmqctl eval'rabbit_shovel_status:status()。”,我可以在我的Rabbitmq服务器中获得铲子的状态。
我激活了模块“ rabbitmq_shovel”和“ rabbitmq_shovel_management”。
我使用HTTP API创建了一些动态挖土机,但问题是,我希望能够使用HTTP API来获取挖土机的状态,但我找不到解决办法。
有什么办法可以使用HTTP API做到这一点?还是应该使用“ rabbitmqctl eval ...”?
我不想使用Rabbitmqctl,因为我想在自己的API中公开此数据,因此我的应用程序应该能够访问它,而不必执行“ exec”。
我正在尝试在 RABBITMQ 上进行集群。我添加了 2 个节点,但无法添加第 3 个。我已将rabbit@node1和rabbit@node2聚集在一起。现在我正在尝试将rabbit@node3与rabbit@node1聚类。这是我想要做的
rabbitmqctl join_cluster rabbit@node1
Clustering node rabbit@node3 with rabbit@node1 ...
Error: mnesia_not_running
Run Code Online (Sandbox Code Playgroud)
有没有什么解决方案可以在集群中添加第三个节点?或错误的任何解决方案:mnesia_not_running
之前已经问过这个问题(RabbitMQ无法初始化erlang发布),但是我无法从现有的答案中找到解决方法.在https://www.rabbitmq.com/man/rabbitmqctl.1.man.html之后,我想运行该rabbitmqctl status命令来显示有关RabbitMQ代理的信息.但是,我收到一条错误消息:
kurt@kurt-ThinkPad:~$ rabbitmqctl status
Run Code Online (Sandbox Code Playgroud)
错误:无法初始化erlang分发:{{shutdown,{failed_to_start_child,net_kernel,{'EXIT',nodistribution}}},{child,undefined,net_sup_dynamic,{erl_distribution,start_link,[['rabbitmq-cli-13',短名称]]},永久,1000,主管,[erl_distribution]}}.
只有root或rabbitmq才能运行rabbitmqctl
如果我运行命令sudo,我仍然收到一条错误消息:
kurt@kurt-ThinkPad:~$ sudo rabbitmqctl status
Run Code Online (Sandbox Code Playgroud)
错误:无法初始化erlang分发:{{shutdown,{failed_to_start_child,net_kernel,{'EXIT',nodistribution}}},{child,undefined,net_sup_dynamic,{erl_distribution,start_link,[['rabbitmq-cli-69',短名称]]},永久,1000,主管,[erl_distribution]}}.
我怎样才能解决这个问题?
我是RabbitMQ的新手,我决定从控制台工具开始,以便更好地理解管理.然后我将使用Web控制台,然后使用Java客户端.
我遇到了一些可以执行的操作rabbitmqctl:
rabbitmqctl add_vhost test_vhost
Run Code Online (Sandbox Code Playgroud)
并与rabbitmqadmin:
rabbitmqadmin declare vhost name="test_vhost"
Run Code Online (Sandbox Code Playgroud)
但是我没有成功,例如,与rabbitmqctl创建新的交换.这两个工具有什么区别?
这里有几个关于 RabbitMQ 心跳的问题,但我还没有找到解决如何实际更改60 seconds(580 seconds在以前的版本中)的默认心跳值的问题。
如果消费者运行的时间超过60 seconds并且无法产生任何算作心跳的流量(例如PHP 消费者),RabbitMQ 将考虑消费者已死而关闭连接,但消费者可能会继续运行,并且当它尝试生成 ACK 时,连接已关闭,您会收到如下错误消息:
破裂的管道或封闭的连接
例如1800 seconds,可以将消费者端的心跳设置为更高的值,但是如果代理配置未更改,则将使用较低的值,如果是默认值 then 60 seconds。来自 RabbitMQ 文档:
默认情况下,代理和客户端将尝试协商心跳。当两个值都不为 0 时,将使用请求值中较低的一个。如果一侧使用零值(尝试禁用心跳)而另一侧不使用,则将使用非零值。
要更改心跳值,可以添加以下行/etc/rabbitmq/rabbitmq.conf(使用新的配置格式)
heartbeat = 1800
Run Code Online (Sandbox Code Playgroud)
这需要重启,所以问题是:如何在不重启的情况下更改rabbitmq心跳值?
我有rabbitmq docker 容器,在不同的机器上运行。我想要做的是使用另一台机器上的 shell 脚本执行rabbitmqctl 命令。我是rabbitmq的新手,需要专家指导
我已经使用rabbitmqadmin 和-H 选项来连接到远程服务器。我能够连接并执行rabbitmqadmin 命令。但是rabbitmqctl没有连接到远程服务器的选项。
$rabbitmqadmin -H 127.2.2.1 -u abc -p abc 列表虚拟主机
$rabbitmqctl add_vhost xyz
我想在远程机器上执行rabbitmqctl命令。rabbitmqadmin 确实有效。
我怎样才能让rabbitmqctl以同样的方式工作。请指导。
我们的RabbitMQ集群面临性能不佳的问题。即使闲着的时候。
一旦安装了rabbitmq-top插件,我们就会看到许多进程的每秒减少量非常高。10万以上!
问题:
笔记:
rabbitmqctl status返回详细信息的速度非常慢(有时 2 分钟),但不显示任何错误有没有办法列出订阅队列的消费者的姓名?使用“ rabbitmqctl list_queues -p test name,consumers ”我可以获取队列中消费者的数量,但不能获取他们的名称。
我在我期望的地方看到了两个消费者。我需要弄清楚另一个消费者是谁。
我有多个键值类型的对象,我需要将它们发送到 RabbitMQ,因此转发会消耗它们。因此,在浏览完RabbitMQ链接之后。它仅告诉您如何发布简单的纯文本消息。谁能告诉我如何在 RabbitMQ go lang 中发布和使用地图对象?
m := make(map[string]string)
m["col1"] = "004999010640000"
m["col2"] = "awadwaw"
m["col3"] = "13"
err = ch.Publish(
"EventCaptureData-Exchange", // exchange
q.Name + "Key", // routing key
true, // mandatory
false, // immediate
amqp.Publishing{
ContentType: "?????",
Body: ????,
})
Run Code Online (Sandbox Code Playgroud) 我在线找到了在rabbitmq上添加/创建新用户的步骤,示例文档
但我的内部团队有一个特殊要求,允许用户仅访问虚拟主机下的某些特定服务/队列/
现在,我创建的用户可以访问虚拟主机/下的所有队列
假设,如果我们需要更改它们的权限以仅访问虚拟主机 / 下的特定队列/服务(例如 cart-order1、cart-order2、cart-order3),我们该怎么做?
我知道 HA 策略是通过以下命令设置的:
$ rabbitmqctl set_policy ha-all "" '{"ha-mode":"all","ha-sync-mode":"automatic"}'
Run Code Online (Sandbox Code Playgroud)
我的问题看起来很基本:
我是否必须在每个节点上或仅在其中一个节点上发出此命令?