Setup Checklist
| Step | Command / Action | Expected |
|---|---|---|
| 1 | docker run -d --hostname rabbit-dev --name rabbit-dev -p 5672:5672 -p 15672:15672 rabbitmq:3-management | RabbitMQ container up |
| 2 | Browser āĻā§āϞ⧠http://localhost:15672 | UI open |
| 3 | Login with guest / guest | dashboard āĻĻā§āĻāĻžāĻŦā§ |
| 4 | go get github.com/rabbitmq/amqp091-go | package ready |
msgs, err := ch.Consume("hello.queue", "", true, false, false, false, nil)
if err != nil {
log.Fatal(err)
}
for msg := range msgs {
log.Printf("received: %s", msg.Body)
}err = ch.Publish("", "hello.queue", false, false, amqp.Publishing{
ContentType: "text/plain",
Body: []byte("hello rabbitmq from go"),
})
if err != nil {
log.Fatal(err)
}Predict the Output
Situation: Consumer āĻāĻā§ āĻāĻžāϞ⧠āĻāĻā§āĨ¤ āϤāĻžāϰāĻĒāϰ producer āĻāĻāĻŦāĻžāϰ āĻāĻžāϞāĻžāύ⧠āĻšāϞā§āĨ¤
Goal: Console-āĻ āĻā§ āĻšāĻŦā§?
What to think about:
- Queue āĻāĻā§ āĻĨā§āĻā§āĻ declared
- Consumer auto-ack mode-āĻ āĻāĻā§
- One message published āĻšā§ā§āĻā§
āϏāĻŽā§āĻāĻžāĻŦā§āϝ āϏāĻŽāĻžāϧāĻžāύ āĻĻā§āĻā§āύ
Consumer console-āĻ `received: hello rabbitmq from go` āĻāĻžāĻāĻĒ āĻāĻāĻāĻĒā§āĻ āĻĻā§āĻāĻž āϝāĻžāĻŦā§, āĻāĻŦāĻ queue depth āĻāĻŦāĻžāϰ zero āĻšā§ā§ āϝāĻžāĻŦā§āĨ¤
āĻāĻāĻā§āϰ production note
Checkpoint
āύāĻŋāĻā§ explain āĻāϰā§: producer āĻāϰ consumer āĻāĻā§ code-āĻ `QueueDeclare` āĻā§āύ āĻĨāĻžāĻāϤ⧠āĻĒāĻžāϰā§?
- Idempotent topology setup āĻšāĻŋāϏā§āĻŦā§
- Service startup-āĻ dependency reduce āĻāϰāϤā§
- āĻāĻŋāύā§āϤ⧠parameters mismatch āĻšāϞ⧠error āĻāϏāϤ⧠āĻĒāĻžāϰā§