Настройка внешней очереди регистрации изменений на Valkey
В стандартной поставке Экстрактора 1С хранилищем очереди изменений служит регистр сведений. Для версий 3.12 и выше внешняя очередь настраивается как работа с Valkey.
В некоторых случаях, может потребоваться вынос очереди изменений в внешний сервис:
Когда скорости записи в регистр сведений «Очередь изменений» не хватает
Когда Регистрация изменений выполняется в «Рабочей» базе 1С, а выгрузка данных в БД-приемник должна делаться из «ночной копии» этой базы 1С
Выбор способа подключения
Названия драйверов «Redis» и «Redis (Native DLL)» в интерфейсе сохраняются при работе с Valkey. HTTP-сервис и Native DLL — два отдельных способа подключения. Для прямого подключения через компоненту сервис http-api-redis не требуется.
Valkey через внешнюю компоненту Native DLL
Начиная с 3.15.1.50 внешняя очередь Valkey может работать напрямую через Native DLL. Выбор, загрузка и обновление библиотеки выполняются по общей инструкции «Внешние компоненты».
Откройте «Сервис» → «Настройки» → «Настройки очереди».
В группе «Внешняя очередь» выберите драйвер «Redis (Native DLL)».
Выберите компоненту Redis для подключения к Valkey и откройте её карточку. Сверьте платформу сервера 1С и версию библиотеки с описанием компоненты.
Нажмите «Обновить из облака» или «Загрузить из файла», затем выполните «Проверить подключение» в карточке компоненты.
Вернитесь в настройки очереди и укажите адрес и порт сервера Valkey, номер базы, пользователя и пароль. Заполните таймаут подключения в миллисекундах, количество попыток и паузу между ними.
Настройте «Лимит получаемых записей». По умолчанию количество записей для загрузки ограничено 100.
Сохраните настройки и проверьте регистрацию и обработку изменений на тестовом проекте.
Проверка библиотеки в карточке компоненты не заменяет проверку доступа к серверу Valkey и обработки очереди.

Valkey через HTTP-сервис
Для этого способа используется прокси-сервис http-api-redis, который передаёт команды Экстрактора между 1С и Valkey. Внешняя компонента не требуется. Ниже описаны установка сервиса, его настройка и HTTP-методы; к прямому подключению через Native DLL эти действия не относятся.
http-api-redis — специализированный HTTP-сервис для взаимодействия Экстрактора 1С с Valkey. Имя сервиса и пути API с именем Redis сохраняются.
отдельная виртуальная машина на Linux, на которой разворачивается docker-образ http_api_redis, которая соответствует минимальным системные требованиям: 4-ехъядерный процессор и 16 ГБ оперативной памяти;
Установленный Valkey (конфигурируется заказчиком, исходя из нагрузки и потребностей).
Сетевая связность между кластером 1С <→ http-api-redis <→ Valkey.
Настройка HTTP-подключения
В разделе «Настройки» Экстрактора 1С перейдите на вкладку «Настройки очереди», выберите драйвер «Redis» и заполните «Настройки Redis». Укажите адрес и порт HTTP-сервиса; его подключение к серверу Valkey настраивается на стороне сервиса.
Начиная с релиза 3.12.1.82 Экстрактора 1С, была улучшена работа с сервисом http-api-redis.
Добавлен параметр чтения очереди «Лимит получаемых записей» (&limit=...), позволяющий управлять объёмом чтения за одну транзакцию, оптимизирована обработка внешней очереди внутри ядра Экстрактора 1С и добавлена настройка таймаута в секундах.
Чтобы применить изменения необходимо обновить сервис http-api-redis и Экстрактор 1С до версии 3.12.1.82 и выше.
Переходим в каталог сервиса (туда, где лежит docker-compose.yml)
Останавливаем сервис:
docker compose downМеняем 1 строку в docker-compose.yml с
image: git.denvic.ru:5050/pub/rest-api-redis/redisapiweb:1.0.7наimage: git.denvic.ru:5050/pub/rest-api-redis/redisapiweb:latestЗапускаем:
docker compose up -d
Общий принцип работы
Каждая работающая подписка на события Экстрактора 1С формирует запись «ключ — значение» во внешней очереди. Для HTTP-подключения запись передаётся через http-api-redis, для Native DLL — напрямую через компоненту. Ключ соответствует комбинации:
Проект;
Строка проекта;
Сегмент/Партиция;
И в «Значение» пишет набор «Параметров» для выгрузки сегмента/партиции.
При использовании Valkey и регистра сведений используется режим «грязной» записи.
Т.е. при записи в «Очередь изменений», инициированного подпиской, система не проверяет дубли, а просто добавляет новую запись.
Все проверки на «дубли», чистка их делается уже в процессе выгрузки (исполнения) Проекта
Это позволяет:
Избежать блокировок на Регистре сведений
Фиксировать события максимально быстро
Когда приходит время выгрузки проекта, Экстрактор 1С выполняет следующие действия:
выборку по маске GUIDПроекта*
получает текущий список изменений
«схлопывает» повторяющиеся значения
и по полученному списку выгружаемых сегментов/партиций с «отборами» делает выгрузку
удаляет из Valkey успешно обработанные записи очереди.
HTTP-методы сервиса http-api-redis
Этот раздел относится только к HTTP-подключению. При использовании Native DLL вызовы этих HTTP-методов не нужны.

В htp-api-redis встроен Swagger, доступный по адресу: http://IP-адрес:Port/swagger/index.html
С помощью метода POST(/api/v1/Redis) мы передаем комбинацию:
В заголовке - ключ (составной ключ Guid проекта + СтрокаПроекта + Сегмент/Партиция + РандомныйХвост)
В Data - Набор параметров (в json/xml)
В результате в Valkey записывается уникальная запись «Ключ: Значение».
Далее, когда Экстрактор 1С запускает Проект на выполнение, то Экстрактор 1С
а) сначала вычитывает накопленный ранее массив ключей по методу GET (/api/v1/Redis) по маске ключей: Ключ*
б) Перебирает все ключи, группирует их и обрабатывает как «Очередь изменений»
в) и потом удаляет обработанные ключи методом DELETE (/api/v1/Redis)
Есть еще следующий кейс (но учтите, что на больших базах он еще не проверялся. Сначала проверяйте на тестовых средах):
Создается реплика базы 1С
Рабочая 1С и реплика 1С подключаются к одному внешнему хранилищу Valkey.
Рабочая 1С сохраняет в Valkey данные очереди изменений.
Реплика 1С читает очередь из Valkey и выполняет проекты выгрузки Экстрактора 1С.