Ci sono due modi per impostare il tempo di scadenza del messaggio (TTL) per RabbitMQ:
- Impostare attraverso le proprietà della coda, dove tutti i messaggi nella coda hanno lo stesso tempo di scadenza.
- Impostare il tempo di scadenza per ogni singolo messaggio, consentendo TTL diversi per ciascun messaggio. Se entrambi i metodi vengono utilizzati insieme, il TTL del messaggio sarà il valore più piccolo tra i due.
Suggerimento: Per il primo metodo di impostare le proprietà della coda, una volta che il messaggio scade, verrà rimosso dalla coda. Nel secondo metodo, anche se il messaggio scade, non verrà eliminato immediatamente dalla coda perché la scadenza di ciascun messaggio viene verificata prima della consegna ai consumatori.
Di seguito è riportata una dimostrazione di come impostare questo utilizzando Golang, simile ad altri linguaggi di programmazione.
Impostare il TTL della coda
Impossibilare il tempo di scadenza del messaggio tramite le proprietà della coda (x-message-ttl).
// Proprietà della coda
props := make(map[string]interface{})
// Il tempo di scadenza del messaggio è di 60 secondi
props["x-message-ttl"] = 60000
q, err := ch.QueueDeclare(
"tizi365.ttl.hello", // Nome della coda
true, // Se persistere la coda
false,
false,
false,
props, // Impostare le proprietà della coda
)
Impostare il TTL del messaggio
Impostare il tempo di scadenza del messaggio tramite le proprietà del messaggio
err = ch.Publish(
"tizi365", // Nome dello scambio
"", // Chiave di instradamento
false,
false,
amqp.Publishing{
Expiration: "30000", // Il tempo di scadenza è di 30 secondi
ContentType: "text/plain",
Body: []byte(body),
})