golang 调用RabbitMQ消息队列监控API
时间: 2023-10-12 13:57:31 浏览: 163
在 Golang 中调用 RabbitMQ 的消息队列监控 API 可以使用标准的 `net/http` 包来发送 HTTP 请求并处理响应。以下是一个简单的示例代码,用于获取 RabbitMQ 的队列信息:
```go
package main
import (
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
type QueueInfo struct {
Name string `json:"name"`
Messages int `json:"messages"`
Consumers int `json:"consumers"`
}
func main() {
// RabbitMQ API URL
url := "http://localhost:15672/api/queues"
// 创建 HTTP 客户端
client := &http.Client{}
// 创建 HTTP 请求
req, err := http.NewRequest("GET", url, nil)
if err != nil {
fmt.Println("创建请求失败:", err)
return
}
// 设置 Basic Auth 认证(如果需要)
req.SetBasicAuth("username", "password")
// 发送请求并获取响应
resp, err := client.Do(req)
if err != nil {
fmt.Println("发送请求失败:", err)
return
}
defer resp.Body.Close()
// 读取响应内容
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("读取响应失败:", err)
return
}
// 解析 JSON 响应
var queues []QueueInfo
err = json.Unmarshal(body, &queues)
if err != nil {
fmt.Println("解析响应失败:", err)
return
}
// 输出队列信息
for _, queue := range queues {
fmt.Printf("队列名称: %s\n", queue.Name)
fmt.Printf("消息数量: %d\n", queue.Messages)
fmt.Printf("消费者数量: %d\n", queue.Consumers)
fmt.Println("----------------------")
}
}
```
请注意,上述代码中的 `url` 变量需要根据你的 RabbitMQ 配置进行相应调整。如果 RabbitMQ 设置了用户名和密码的认证,你需要使用 `SetBasicAuth` 方法设置 Basic Auth 认证信息。
该示例代码发送一个 HTTP GET 请求到 RabbitMQ 的 `/api/queues` 接口,获取所有队列的信息,并将其解析为 `QueueInfo` 结构体。然后,你可以根据需要处理和使用这些队列信息。
希望这个示例能帮助到你。如果有任何其他问题,请随时提问。
阅读全文