要使用Go语言与ActiveMQ建立连接、发送消息以及消费消息,可以借助第三方库,如github.com/apache/activemq-artemis或github.com/streadway/amqp(适用于AMQP协议)。这里以github.com/streadway/amqp为例,说明如何使用Go连接ActiveMQ、发送消息以及消费消息。假设您已经安装了该库:
bash
go get github.com/streadway/amqp
连接ActiveMQ
go
package main
import (
"log"
"time"
"github.com/streadway/amqp"
)
const (
amqpURI = "amqp://guest:guest@localhost:5672/"
queueName = "example_queue"
exchangeName = "example_exchange"
routingKey = "example_routing_key"
)
func main() {
conn, err := amqp.Dial(amqpURI)
if err != nil {
log.Fatalf("Failed to connect to ActiveMQ: %v", err)
}
defer conn.Close()
ch, err := conn.Channel()
if err != nil {
log.Fatalf("Failed to open a channel: %v", err)
}
defer ch.Close()
// 创建队列(如果不存在)
q, err := ch.QueueDeclare(
queueName, // name
true, // durable
false, // delete when unused
false, // exclusive
false, // no-wait
nil, // arguments
)
if err != nil {
log.Fatalf("Failed to declare queue: %v", err)
}
// 绑定队列到交换机(如果使用交换机)
err = ch.QueueBind(
q.Name, // queue name
routingKey, // routing key
exchangeName, // exchange
false, // no-wait
nil, // arguments
)
if err != nil {
log.Fatalf("Failed to bind queue to exchange: %v", err)
}
// 在这里执行发送或消费操作
}
发送消息
go
// 发送消息到队列
messageBody := "Hello, ActiveMQ!"
err := ch.Publish(
exchangeName, // exchange
routingKey, // routing key
false, // mandatory
false, // immediate
amqp.Publishing{
DeliveryMode: amqp.Persistent, // 设置消息持久化
Timestamp: time.Now().UnixNano(),
ContentType: "text/plain",
Body: []byte(messageBody),
},
)
if err != nil {
log.Printf("Failed to publish a message: %v", err)
} else {
log.Println("Message sent successfully.")
}
消费消息
go
// 消费消息
msgs, err := ch.Consume(
q.Name, // queue
"", // consumer
true, // auto-ack
false, // exclusive
false, // no-local
false, // no-wait
nil, // args
)
if err != nil {
log.Fatalf("Failed to register a consumer: %v", err)
}
forever := make(chan bool)
go func() {
for d := range msgs {
log.Printf("Received message: %s", d.Body)
// 在这里处理消息内容
}
}()
log.Println("Waiting for messages...")
<-forever
以上代码片段展示了如何使用Go语言连接ActiveMQ、发送消息到指定队列(或通过交换机路由)以及消费队列中的消息。请注意,实际使用时需根据您的具体需求调整连接参数、队列名、交换机名、路由键等,并在消费消息时适当地处理消息内容和确认机制(如手动ACK)。同时,确保ActiveMQ服务器已启动并监听在正确的端口(默认为5672),且提供的用户名(如guest)和密码(如guest)有效。如果您使用的是ActiveMQ的其他协议(如OpenWire),则需要选用对应的支持库。
本文介绍了如何使用Go语言通过github.com/streadway/amqp库连接ActiveMQ,包括创建连接、声明队列、绑定交换机以及发送和消费消息的过程。
1415

被折叠的 条评论
为什么被折叠?



