Istnieją dwie metody ustawiania czasu wygaśnięcia wiadomości (TTL) dla RabbitMQ:

  1. Ustawienie poprzez właściwości kolejki, gdzie wszystkie wiadomości w kolejce mają ten sam czas wygaśnięcia.
  2. 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),
		})