<extensionManifest><groupId>org.apache.nifi</groupId><artifactId>nifi-redis-nar</artifactId><version>1.22.0</version><parentNar><groupId>org.apache.nifi</groupId><artifactId>nifi-redis-service-api-nar</artifactId><version>1.22.0</version></parentNar><systemApiVersion>1.22.0</systemApiVersion><buildInfo><tag>nifi-1.22.0-RC1</tag><branch>UNKNOWN</branch><revision>71e3ea9</revision></buildInfo><extensions><extension><name>org.apache.nifi.redis.service.RedisConnectionPoolService</name><type>CONTROLLER_SERVICE</type><description>A service that provides connections to Redis.</description><tags><tag>redis</tag><tag>cache</tag></tags><properties><property><name>Redis Mode</name><displayName>Redis Mode</displayName><description>The type of Redis being communicated with - standalone, sentinel, or clustered.</description><defaultValue>Standalone</defaultValue><allowableValues><allowableValue><displayName>Standalone</displayName><value>Standalone</value><description>A single standalone Redis instance.</description></allowableValue><allowableValue><displayName>Sentinel</displayName><value>Sentinel</value><description>Redis Sentinel which provides high-availability. Described further at https://redis.io/topics/sentinel</description></allowableValue><allowableValue><displayName>Cluster</displayName><value>Cluster</value><description>Clustered Redis which provides sharding and replication. Described further at https://redis.io/topics/cluster-spec</description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Connection String</name><displayName>Connection String</displayName><description>The connection string for Redis. In a standalone instance this value will be of the form hostname:port. In a sentinel instance this value will be the comma-separated list of sentinels, such as host1:port1,host2:port2,host3:port3. In a clustered instance this value will be the comma-separated list of cluster masters, such as host1:port,host2:port,host3:port.</description><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Database Index</name><displayName>Database Index</displayName><description>The database index to be used by connections created from this connection pool. See the databases property in redis.conf, by default databases 0-15 will be available.</description><defaultValue>0</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Communication Timeout</name><displayName>Communication Timeout</displayName><description>The timeout to use when attempting to communicate with Redis.</description><defaultValue>10 seconds</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Cluster Max Redirects</name><displayName>Cluster Max Redirects</displayName><description>The maximum number of redirects that can be performed when clustered.</description><defaultValue>5</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Sentinel Master</name><displayName>Sentinel Master</displayName><description>The name of the sentinel master, require when Mode is set to Sentinel</description><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Password</name><displayName>Password</displayName><description>The password used to authenticate to the Redis server. See the requirepass property in redis.conf.</description><required>false</required><sensitive>true</sensitive><expressionLanguageSupported>true</expressionLanguageSupported><expressionLanguageScope>VARIABLE_REGISTRY</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>SSL Context Service</name><displayName>SSL Context Service</displayName><description>If specified, this service will be used to create an SSL Context that will be used to secure communications; if not specified, communications will not be secure</description><controllerServiceDefinition><className>org.apache.nifi.ssl.RestrictedSSLContextService</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>1.22.0</version></controllerServiceDefinition><required>false</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Pool - Max Total</name><displayName>Pool - Max Total</displayName><description>The maximum number of connections that can be allocated by the pool (checked out to clients, or idle awaiting checkout). A negative value indicates that there is no limit.</description><defaultValue>8</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Pool - Max Idle</name><displayName>Pool - Max Idle</displayName><description>The maximum number of idle connections that can be held in the pool, or a negative value if there is no limit.</description><defaultValue>8</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Pool - Min Idle</name><displayName>Pool - Min Idle</displayName><description>The target for the minimum number of idle connections to maintain in the pool. If the configured value of Min Idle is greater than the configured value for Max Idle, then the value of Max Idle will be used instead.</description><defaultValue>0</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Pool - Block When Exhausted</name><displayName>Pool - Block When Exhausted</displayName><description>Whether or not clients should block and wait when trying to obtain a connection from the pool when the pool has no available connections. Setting this to false means an error will occur immediately when a client requests a connection and none are available.</description><defaultValue>true</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Pool - Max Wait Time</name><displayName>Pool - Max Wait Time</displayName><description>The amount of time to wait for an available connection when Block When Exhausted is set to true.</description><defaultValue>10 seconds</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Pool - Min Evictable Idle Time</name><displayName>Pool - Min Evictable Idle Time</displayName><description>The minimum amount of time an object may sit idle in the pool before it is eligible for eviction.</description><defaultValue>60 seconds</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Pool - Time Between Eviction Runs</name><displayName>Pool - Time Between Eviction Runs</displayName><description>The amount of time between attempting to evict idle connections from the pool.</description><defaultValue>30 seconds</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Pool - Num Tests Per Eviction Run</name><displayName>Pool - Num Tests Per Eviction Run</displayName><description>The number of connections to tests per eviction attempt. A negative value indicates to test all connections.</description><defaultValue>-1</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Pool - Test On Create</name><displayName>Pool - Test On Create</displayName><description>Whether or not connections should be tested upon creation.</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Pool - Test On Borrow</name><displayName>Pool - Test On Borrow</displayName><description>Whether or not connections should be tested upon borrowing from the pool.</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Pool - Test On Return</name><displayName>Pool - Test On Return</displayName><description>Whether or not connections should be tested upon returning to the pool.</description><defaultValue>false</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>Pool - Test While Idle</name><displayName>Pool - Test While Idle</displayName><description>Whether or not connections should be tested while idle.</description><defaultValue>true</defaultValue><allowableValues><allowableValue><displayName>true</displayName><value>true</value><description></description></allowableValue><allowableValue><displayName>false</displayName><value>false</value><description></description></allowableValue></allowableValues><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><providedServiceAPIs><providedServiceAPI><className>org.apache.nifi.redis.RedisConnectionPool</className><groupId>org.apache.nifi</groupId><artifactId>nifi-redis-service-api-nar</artifactId><version>1.22.0</version></providedServiceAPI></providedServiceAPIs></extension><extension><name>org.apache.nifi.redis.service.RedisDistributedMapCacheClientService</name><type>CONTROLLER_SERVICE</type><description>An implementation of DistributedMapCacheClient that uses Redis as the backing cache. This service relies on the WATCH, MULTI, and EXEC commands in Redis, which are not fully supported when Redis is clustered. As a result, this service can only be used with a Redis Connection Pool that is configured for standalone or sentinel mode. Sentinel mode can be used to provide high-availability configurations.</description><tags><tag>redis</tag><tag>distributed</tag><tag>cache</tag><tag>map</tag></tags><properties><property><name>redis-connection-pool</name><displayName>Redis Connection Pool</displayName><description></description><controllerServiceDefinition><className>org.apache.nifi.redis.RedisConnectionPool</className><groupId>org.apache.nifi</groupId><artifactId>nifi-redis-service-api-nar</artifactId><version>1.22.0</version></controllerServiceDefinition><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property><property><name>redis-cache-ttl</name><displayName>TTL</displayName><description>Indicates how long the data should exist in Redis. Setting '0 secs' would mean the data would exist forever</description><defaultValue>0 secs</defaultValue><required>true</required><sensitive>false</sensitive><expressionLanguageSupported>false</expressionLanguageSupported><expressionLanguageScope>NONE</expressionLanguageScope><dynamicallyModifiesClasspath>false</dynamicallyModifiesClasspath><dynamic>false</dynamic></property></properties><providedServiceAPIs><providedServiceAPI><className>org.apache.nifi.distributed.cache.client.AtomicDistributedMapCacheClient</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>1.22.0</version></providedServiceAPI><providedServiceAPI><className>org.apache.nifi.distributed.cache.client.DistributedMapCacheClient</className><groupId>org.apache.nifi</groupId><artifactId>nifi-standard-services-api-nar</artifactId><version>1.22.0</version></providedServiceAPI></providedServiceAPIs></extension></extensions></extensionManifest>