SharedMapToVars#
Действие SharedMapToVars позволяет помещать значения из разделяемого кэша в переменную, ассоциированную с пришедшим запросом. Работа с хранилищем shared map, построенном на базе Shared Memory в Nginx.
Параметры:
Название |
Обязательность |
Допустимые значения |
Описание |
|---|---|---|---|
operation |
+ |
GET/GET_FIRST/GET_LAST |
Тип операции в случае, если операция не определена в правиле: GET - получение по ключу; GET__FIRST - получение первого по дате/времени вставки; GET_LAST - получение последнего по дате/времени вставки. Используется по умолчанию, если операция не задана в правиле. |
shared_store_name |
+ |
Строка, содержащая имя разделяемого хранилища |
Должно указываться имя ранее объявленного хранилища |
rules |
+ |
Список правил вида: {var: имя_переменной, key: ключ, operation: GET/GET_FIRST/GET_LAST, setwhenempty: true/false} |
key: ключ элемента в случае операции GET; var: имя переменной из которой берут значения; lifetime: время жизни; setwhenempty: если хранилище shared map является пустым (запросов на сервис еще не было), то при значении флага false в момент выполнения action SharedMapToVars заданное значение переменной не будет затираться. В ином случае, переменная примет значение пустой строки "". Значение флага по умолчанию: true. |
Заполняемые переменные:
Название |
Диапазон значений |
Описание |
|---|---|---|
clj_shared_map_error |
MESSAGE_UNKNOWN/DEFAULT_ERROR/EMPTY_QUEUE/ALREADY_EXISTS |
MESSAGE_UNKNOWN - попытка получить сообщение по ключу, который отсутствует в кэше; DEFAULT_ERROR - внутренняя ошибка; EMPTY_QUEUE - очередь/кэш пуст; ALREADY_EXISTS - сообщение с таким ключом уже есть в кэше |
Переменная заполняется только в случае ошибки.
Пример:
system:
storages:
- name: storage_1
services:
service_http_proxy:
- id: 1
chains:
- action: SharedMapToVars
conditions:
- {var: request_method, value: GET, operator: "="}
params:
shared_store_name: storage_1
rules:
- {var: $clj_last_request_uri, key: last_request_uri, operation: GET}
- {var: $clj_last_remote_addr, key: last_client_addr, operation: GET}
В примере, в зависимости от метода запроса и значения параметра type из кэша извлекается сообщение по ключам last_request_uri или last_client_addr и помещаются в соответствующие переменные.