Ответ
Работал с очередями в Golang, используя RabbitMQ, Kafka и NATS. Основные задачи: асинхронная обработка задач, балансировка нагрузки, event-driven архитектура.
Пример с 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("tasks", 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("task data"),
})
if err != nil {
log.Fatal(err)
}
Использовал dead-letter queues для обработки ошибок, гарантированную доставку через подтверждения (ack/nack), и шаблоны типа "publish-subscribe". Для Kafka работал с партициями, consumer groups и exactly-once семантикой.