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 и помещаются в соответствующие переменные.