āĻĻā§āĻāĻāĻŋ āĻāϞāĻžāĻĻāĻž āĻāĻŋāύāĻŋāϏ
| Concept | āĻā§ survive āĻāϰ⧠| Go code knob |
|---|---|---|
| Durable queue | queue definition broker restart-āĻāϰ āĻĒāϰ⧠āĻĨāĻžāĻā§ | QueueDeclare(... durable=true ...) |
| Persistent message | message disk-āĻ persist āĻšāĻā§āĻžāϰ āĻā§āώā§āĻāĻž āĻāϰ⧠| DeliveryMode: amqp.Persistent |
Survival Matrix
| Queue durable? | Message persistent? | Restart-āĻāϰ āĻĒāϰ⧠āĻā§ āĻāĻļāĻž āĻāϰāĻž āϝāĻžā§ |
|---|---|---|
| No | No | queue-āĻ āĻšāĻžāϰāĻžāϤ⧠āĻĒāĻžāϰā§, message-āĻ āĻšāĻžāϰāĻžāϤ⧠āĻĒāĻžāϰ⧠|
| Yes | No | queue āĻĨāĻžāĻāĻŦā§, in-flight/non-persistent message āĻšāĻžāϰāĻžāϤ⧠āĻĒāĻžāϰ⧠|
| No | Yes | queue āύāĻž āĻĨāĻžāĻāϞ⧠benefit āύā§āĻ |
| Yes | Yes | safest baseline |
q, err := ch.QueueDeclare("billing.queue", true, false, false, false, nil)
if err != nil {
log.Fatal(err)
}
err = ch.Publish("", q.Name, false, false, amqp.Publishing{
DeliveryMode: amqp.Persistent,
ContentType: "application/json",
Body: []byte(`{"invoice_id":9001}`),
})
if err != nil {
log.Fatal(err)
}Production nuance
Checkpoint
āĻāĻāĻāĻŋ sentence-āĻ explain āĻāϰā§: durable queue āĻŽāĻžāύ⧠message durable āύāĻžāĨ¤
- Queue metadata āĻŦāĻžāĻāĻā§
- Payload āĻŦāĻžāĻāĻāĻžāϰ āĻāύā§āϝ message persistence āĻĻāϰāĻāĻžāϰ
- End-to-end reliability āĻāϰāĻ factors-āĻāϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§