Hay dos formas de establecer el tiempo de expiración del mensaje (TTL) para RabbitMQ:

  1. Establecerlo a través de las propiedades de la cola, donde todos los mensajes en la cola tienen el mismo tiempo de expiración.
  2. Establecer el tiempo de expiración para cada mensaje individualmente, permitiendo TTL diferentes para cada mensaje. Si se utilizan ambos métodos juntos, el TTL del mensaje será el valor más pequeño entre los dos.

Consejo: Para el primer método de establecer propiedades de cola, una vez que el mensaje expire, será eliminado de la cola. En el segundo método, incluso si el mensaje expira, no será eliminado inmediatamente de la cola porque la expiración de cada mensaje se comprueba antes de la entrega a los consumidores.

A continuación se muestra una demostración de cómo hacer esto usando Golang, similar a otros lenguajes de programación.

Establecer TTL de la cola

Establecer el tiempo de expiración del mensaje a través de las propiedades de la cola (x-message-ttl).

	// Propiedades de la cola
	props := make(map[string]interface{})
	// Tiempo de expiración del mensaje es 60 segundos
	props["x-message-ttl"] = 60000

	q, err := ch.QueueDeclare(
		"tizi365.ttl.hello", // Nombre de la cola
		true,   // Si persistir la cola
		false,
		false,
		false,
		props, // Establecer propiedades de la cola
	)

Establecer TTL del mensaje

Establecer el tiempo de expiración del mensaje a través de las propiedades del mensaje

err = ch.Publish(
		"tizi365",     // Nombre de intercambio
		"", // Clave de enrutamiento
		false,
		false,
		amqp.Publishing{
			Expiration: "30000", // Tiempo de expiración es 30 segundos
			ContentType: "text/plain",
			Body:        []byte(body),
		})