Istnieją dwie metody ustawiania czasu wygaśnięcia wiadomości (TTL) dla RabbitMQ:
- Ustawienie poprzez właściwości kolejki, gdzie wszystkie wiadomości w kolejce mają ten sam czas wygaśnięcia.
- Ustawienie czasu wygaśnięcia dla każdej wiadomości indywidualnie, umożliwiając różne TTL dla każdej wiadomości. Jeśli obie metody są używane razem, TTL wiadomości będzie mniejszą wartością między nimi.
Wskazówka: Dla pierwszej metody ustawiania właściwości kolejki, po upływie TTL wiadomość zostanie usunięta z kolejki. W przypadku drugiej metody, nawet jeśli wiadomość wygaśnie, nie zostanie ona natychmiast usunięta z kolejki, ponieważ wygaśnięcie każdej wiadomości jest sprawdzane przed dostarczeniem do konsumentów.
Poniżej jest przedstawienie, jak to zrobić przy użyciu języka Golang, podobnie jak w innych językach programowania.
Ustaw TTL kolejki
Ustaw czas wygaśnięcia wiadomości poprzez właściwości kolejki (x-message-ttl).
// Właściwości kolejki
props := make(map[string]interface{})
// Czas wygaśnięcia wiadomości wynosi 60 sekund
props["x-message-ttl"] = 60000
q, err := ch.QueueDeclare(
"tizi365.ttl.hello", // Nazwa kolejki
true, // Czy ma być trwała
false,
false,
false,
props, // Ustaw właściwości kolejki
)
Ustaw TTL wiadomości
Ustaw czas wygaśnięcia wiadomości poprzez właściwości wiadomości
err = ch.Publish(
"tizi365", // Nazwa wymiany
"", // Klucz routingu
false,
false,
amqp.Publishing{
Expiration: "30000", // Czas wygaśnięcia wynosi 30 sekund
ContentType: "text/plain",
Body: []byte(body),
})