SharedMapToVars#
Действие SharedMapToVars позволяет помещать значения из разделяемого кэша в переменную, ассоциированную с пришедшим запросом. Работа с хранилищем shared map, построенном на базе Shared Memory в Nginx.
Параметры:
Название |
Обязательность |
Допустимые значения |
Описание |
|---|---|---|---|
operation |
- |
GET/GET_FIRST/GET_LAST. |
Тип операции в случае, если операция не определена в правиле: |
shared_store_name |
+ |
Строка, содержащая имя разделяемого хранилища |
Должно указываться имя ранее объявленного хранилища |
rules |
+ |
Список правил вида: |
key: ключ элемента в случае операции GET. Параметр обязателен в случае operation == GET; |
"Верхнеуровневый" параметр operation используется для всех параметров rules (даже если не указан явно). Если в каком-либо параметре rules определен свой "низкоуровневый" параметр operation, то его значение будет затирать значение "верхнеуровневого" для данного параметра rules.
Заполняемые переменные:
Название |
Диапазон значений |
Описание |
|---|---|---|
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
operation: GET
rules:
- {var: $clj_last_request_uri, key: last_request_uri}
- {var: $clj_last_remote_addr, key: last_client_addr}
- key: counter_{{ counter_name_template }}
- operation: GET_FIRST
var: $clj_current_count_{{ counter_name_template }}
setwhenempty: true
default_empty_value: 'my_value'
В примере, в зависимости от метода запроса и значения параметра type из кэша извлекается сообщение по ключам last_request_uri или last_client_addr и помещаются в соответствующие переменные.