gpt4 book ai didi

Go amqp方法列出所有当前声明的队列?

转载 作者:IT王子 更新时间:2023-10-29 02:30:00 28 4
gpt4 key购买 nike

我正在使用 streadway/amqp 将 rabbitmq 连接到我们的警报系统。我需要一种方法可以返回所有当前声明的队列的列表(交换也很好!),这样我就可以遍历并获取所有消息计数。

我正在浏览这里的 api 文档...

http://godoc.org/github.com/streadway/amqp#Queue

...但我似乎没有找到我要找的东西。我们目前正在使用对“rabbitmqctl list_queues”的 bash 调用,但这是获取此信息的一种笨拙方式,需要自定义 sudo 设置,并且每天将数百个日志条目发送到安全日志。

编辑:方法的意思是“一种获取这条信息的方法”,而不是实际的调用,尽管调用会很棒我不相信它存在。

最佳答案

回答了我自己的问题。没有办法! amqp 规范没有找到这一点的标准方法,这对我来说似乎是一个明显的疏忽。但是,由于我的后端是带有管理插件的 rabbitmq,我可以调用它来获取此信息。

来自 https://stackoverflow.com/a/21286370/5076297 (在 python 中,我只需要翻译它并且可能还弄清楚获取虚拟主机的调用):

import requests

def rest_queue_list(user='guest', password='guest', host='localhost', port=15672, virtual_host=None):
url = 'http://%s:%s/api/queues/%s' % (host, port, virtual_host or '')
response = requests.get(url, auth=(user, password))
queues = [q['name'] for q in response.json()]
return queues

编辑:在 golang 中(这是一个让人头疼的问题,因为我已经很多年没有对结构做过任何事情了)

package main

import (
"fmt"
"net/http"
"encoding/json"
)

func main() {

type Queue struct {
Name string `json:name`
VHost string `json:vhost`
}

manager := "http://127.0.0.1:15672/api/queues/"
client := &http.Client{}
req, _ := http.NewRequest("GET", manager, nil)
req.SetBasicAuth("guest", "guest")
resp, _ := client.Do(req)

value := make([]Queue, 0)
json.NewDecoder(resp.Body).Decode(&value)
fmt.Println(value)
}

输出看起来像这样(我有两个名为 hello 和 test 的队列)

[{hello /} {test /}]

关于Go amqp方法列出所有当前声明的队列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31931215/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com