我自己回答了这个问题。没有办法!AMQP规范没有一种标准的方法来找出这个信息,这对我来说似乎是一个明显的疏漏。然而,由于我的后端是带有管理插件的RabbitMQ,我可以调用它来获取这些信息。
来自
https://dev59.com/k2855IYBdhLWcg3wiU31#21286370(在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 /}]