SharedMapSetter#
Помещает сообщение в разделяемый кэш. Работа с хранилищем shared map, построенном на базе Shared Memory в Nginx.
Параметры:
Название |
Обязательность |
Допустимые значения |
Описание |
|---|---|---|---|
operation |
+ |
ADD/REPLACE/INCREMENT |
Тип операции: ADD - добавление; REPLACE - замена; INCREMENT - увеличение существующего значения на заданную дельту (только для числовых значений) |
shared_store_key |
+ |
Строка, содержащая выражение из переменных и/или констант |
Обязательный параметр, задающий ключ, с которым сообщение будет помещено в кэш |
shared_store_name |
+ |
Строка, содержащая имя разделяемого хранилища |
Должно указываться имя ранее объявленного хранилища |
lifetime |
- |
Текстовое значение с суффиксом: ms - миллисекунды; s - секунды; m - минуты; h - часы; d - дни; w - недели; M - месяцы, 30 дней; y - годы, 365 дней |
Время жизни помещаемого в кэш значения, по истечении которого оно будет удалено |
Заполняемые переменные:
Название |
Диапазон значений |
Описание |
|---|---|---|
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: SharedMapSetter
conditions:
- {var: request_method, value: PUT, operator: "="}
params:
operation: ADD
shared_store_key: $arg_ID
shared_store_name: storage_1
lifetime: 1h
message: $clj_request_body
- action: SharedMapSetter
conditions:
- {var: request_method, value: POST, operator: "="}
params:
operation: REPLACE
shared_store_key: $arg_ID
shared_store_name: storage_1
lifetime: 1h
message: $clj_request_body
В примере, в зависимости от метода запроса, тело запроса помещается в кэш на 1 час, или заменяется, если оно ранее там существовало (по ключу из параметра запроса ID).