Существуют два способа установить время истечения срока действия сообщения (TTL) для RabbitMQ:

  1. Установить через свойства очереди, где все сообщения в очереди имеют одинаковое время истечения.
  2. Установить время истечения для каждого сообщения индивидуально, позволяя различное TTL для каждого сообщения. Если оба метода используются вместе, TTL сообщения будет меньшим из двух значений.

Совет: Для первого метода установки свойств очереди, как только сообщение истечет, оно будет удалено из очереди. Во втором методе, даже если сообщение истечет, оно не будет немедленно удалено из очереди, потому что истечение каждого сообщения проверяется перед доставкой потребителям.

Ниже приведено демонстрация того, как это сделать с помощью Golang, подобно другим языкам программирования.

Установить время истечения срока действия очереди

Установите время истечения сообщения через свойства очереди (x-message-ttl).

	// Свойства очереди
	props := make(map[string]interface{})
	// Время истечения сообщения - 60 секунд
	props["x-message-ttl"] = 60000

	q, err := ch.QueueDeclare(
		"tizi365.ttl.hello", // Наименование очереди
		true,   // Сохранить ли очередь
		false,
		false,
		false,
		props, // Установить свойства очереди
	)

Установить время истечения сообщения

Установите время истечения сообщения через свойства сообщения

err = ch.Publish(
		"tizi365",     // Наименование обмена
		"", // Ключ маршрутизации
		false,
		false,
		amqp.Publishing{
			Expiration: "30000", // Время истечения - 30 секунд
			ContentType: "text/plain",
			Body:        []byte(body),
		})