Перейти к основному содержимому
Нормативная версия документации - английская

Эта страница переведена с английского языковой моделью. При любом расхождении верен английский оригинал.

Путь

Путь одной записи потока через сервис RustStream: добавление, чтение группой, доставка, обработчик, ответ и XACK.

Путь одной записи потока, на которую отвечают: от добавления до подтвержденияXADDполе _payload и поля h:XREADGROUPдо 64 записей, клиентом чтенияRedisMessageиз полей: нагрузка и заголовкиДиспетчеризацияцикл рантайма или его воркерыДекодированиенагрузки в тип обработчикаОбработчик подписчикаasync fn под #[subscriber]ОтветXADD через соединение пулаЗавершениерешает исходXACKчерез соединение пула
Схема текстом
  1. XADD поле _payload и поля h: → XREADGROUP до 64 записей, клиентом чтения
  2. XREADGROUP до 64 записей, клиентом чтения → RedisMessage из полей: нагрузка и заголовки
  3. RedisMessage из полей: нагрузка и заголовки → Диспетчеризация цикл рантайма или его воркеры
  4. Диспетчеризация цикл рантайма или его воркеры → Декодирование нагрузки в тип обработчика
  5. Декодирование нагрузки в тип обработчика → Обработчик подписчика async fn под #[subscriber]
  6. Обработчик подписчика async fn под #[subscriber] → Ответ XADD через соединение пула
  7. Ответ XADD через соединение пула → Завершение решает исход
  8. Завершение решает исход → XACK через соединение пула

Чтение возвращает до 64 записей за один обмен с сервером, и подписка отдаёт их по одной, прежде чем читать снова. Пакетный обработчик вместо этого читает столько записей, сколько составляет размер его пакета. Если в потоке нет ничего нового, чтение блокируется на интервал block подписки, по умолчанию на пять секунд.

Каждая запись становится RedisMessage: поле _payload - полезная нагрузка, а каждое поле h: - заголовок. Рантайм декодирует полезную нагрузку и вызывает обработчик.

Ответ кодируется и публикуется командой XADD через соединение пула, а доставка завершается после него. Запись, прочитанная из списка, и сообщение Pub/Sub начиная с доставки проходят тот же путь, но завершаются так, как принято в их форме. Это показывает страница Завершение.