Ответ
Да, работал с очередями, в основном с RabbitMQ и Kafka. В RabbitMQ использовал библиотеку github.com/streadway/amqp для публикации и потребления сообщений. В Kafka — github.com/segmentio/kafka-go или github.com/confluentinc/confluent-kafka-go.
Пример с RabbitMQ:
conn, err := amqp.Dial("amqp://guest:guest@localhost:5672/")
if err != nil {
log.Fatal(err)
}
defer conn.Close()
ch, err := conn.Channel()
if err != nil {
log.Fatal(err)
}
defer ch.Close()
q, err := ch.QueueDeclare("test", false, false, false, false, nil)
if err != nil {
log.Fatal(err)
}
err = ch.Publish("", q.Name, false, false, amqp.Publishing{
ContentType: "text/plain",
Body: []byte("Hello, RabbitMQ!"),
})
if err != nil {
log.Fatal(err)
}
Также работал с dead-letter очередями, подтверждением сообщений (ack/nack) и балансировкой нагрузки между потребителями.