Настройки блокировок

Примечание
Информация, приведенная ниже, актуальна только для версий системы ELMA 3.13.7 и выше.

Блокировка в памяти

В том случае, если не настроен распределенный кэш (используется только один сервер ELMA), после установки системы ELMA по умолчанию будет включена блокировка в памяти.

При необходимости ее можно настроить вручную. Для этого в файл конфигурации ../<Общая папка с файлами системы ELMA>/UserConfig/configuration.config требуется внести следующие изменения: 

1. В секции <configSections> добавить строки:

<section name="lock" type="EleWise.ELMA.Configuration.GenericProviderFeatureSection`1[[EleWise.ELMA.Locking.LockServiceManager, EleWise.ELMA.SDK]], EleWise.ELMA.SDK"/>
<section name="MemoryLockServiceSettings" type="EleWise.ELMA.Locking.MemoryLockServiceSettings, EleWise.ELMA.SDK"/>

2. В конце файла конфигурации добавить строки:

<lock defaultProvider="memlock">
	  <providers>
		   <clear/>
		   <add name="dblock" type="EleWise.ELMA.Locking.MemoryLockService, EleWise.ELMA.SDK"/>
	  </providers>
</lock>

Внимание!
Блокировка в памяти не предназначена для веб-ферм.

Блокировка в БД

В том случае, если настроен распределенный кэш (используется более одного сервера ELMA), после установки системы ELMA по умолчанию будет включена блокировка в БД.

При необходимости ее можно настроить вручную. Для этого в файл конфигурации ../<Общая папка с файлами системы ELMA>/UserConfig/configuration.config требуется внести следующие изменения:

1. В секции <configSections> добавить строки:

<section name="lock" type="EleWise.ELMA.Configuration.GenericProviderFeatureSection`1[[EleWise.ELMA.Locking.LockServiceManager, EleWise.ELMA.SDK]], EleWise.ELMA.SDK"/>
<section name="DbDistributedLockServiceSettings" type="EleWise.ELMA.Locking.DbDistributedLockServiceSettings, EleWise.ELMA.SDK"/>

2. В конце файла конфигурации добавить строки:

<lock defaultProvider="dblock">
	 <providers>
		  <clear/>
		  <add name="dblock" type="EleWise.ELMA.Locking.DbDistributedLockService, EleWise.ELMA.SDK"/>
	 </providers>
</lock>

Следует обратить внимание, что данная блокировка также может быть настроена и при использовании одного сервера ELMA.

Блокировка в Redis

Также для хранения блокировок присутствует возможность использовать сетевое журналируемое хранилище данных Redis. Для этого требуется не менее трех не синхронизированных серверов Redis. В данном случае необходимо явно указать это в настройках ELMA.

Для этого необходимо в файл конфигурации ../<Общая папка с файлами системы ELMA>/UserConfig/configuration.config внести следующие изменения:

1. В секции <configSections> добавить строки:

<section name="lock" type="EleWise.ELMA.Configuration.GenericProviderFeatureSection`1[[EleWise.ELMA.Locking.LockServiceManager, EleWise.ELMA.SDK]], EleWise.ELMA.SDK"/>
<section name="RedisDistributedLockServiceSettings" type="EleWise.ELMA.DistributedLock.Redis.RedisDistributedLockServiceSettings, EleWise.ELMA.DistributedLock.Redis"/>

2. В конце файла конфигурации добавить строки:

<lock defaultProvider="redis">
   <providers>
         <clear/>
         <add name="redis" type="EleWise.ELMA.DistributedLock.Redis.RedisDistributedLockService, EleWise.ELMA.DistributedLock.Redis"/>
   </providers>
</lock>
<RedisDistributedLockServiceSettings>
   <connections>
         <add connection="machine1:6379,password=your_redis_password"/>
         <add connection="machine2:6379,password=your_redis_password"/>
         <add connection="machine3:6379,password=your_redis_password"/>
   </connections>
</RedisDistributedLockServiceSettings>

где machine1:6379, machine2:6379 и machine3:6379 – это адреса и порты серверов Redis, а your_redis_password – пароли соответствующих серверов.