Hay dos formas de establecer el tiempo de expiración del mensaje (TTL) para RabbitMQ:
- Establecerlo a través de las propiedades de la cola, donde todos los mensajes en la cola tienen el mismo tiempo de expiración.
- 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),
})