Check out the Infinispan documentation to find out more about the Infinispan project.

Adding the Infinispan Embedded Extension

After you set up your Quarkus project, run the following command from the base directory:

mvn quarkus:add-extension -Dextensions="infinispan-embedded"

The command adds the following dependency to your pom.xml:

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-infinispan-embedded</artifactId>
</dependency>

Feature Support

The Infinispan embedded extension offers core caching functionality that includes clustered caches, off-heap memory, data persistence, and transactions.

The Infinispan embedded extension does not currently support indexing capabilities.

Transactions

Configure Infinispan caches for transactional operations with a specific TransactionManagerLookup, as follows:

<local-cache name="quarkus-transaction">
   <transaction transaction-manager-lookup="org.infinispan.transaction.lookup.JBossStandaloneJTAManagerLookup"/>
</local-cache>

For more information, see the Quarkus Transaction Guide.

Native Limitations

When running Infinispan in native mode, some limitations apply:

  • JMX management is not supported. + GraalVM does not allow native VM interfaces.

  • UDP/Multicast is not supported. + You must use TCP transport and a non-UDP based membership protocol with JGroups.

Injection (CDI)

The Infinispan embedded extension provides injection capabilities so you do not have to configure and start caches manually.

Additional injection functionality will be available in future versions.

EmbeddedCacheManager

This is the main entry point to configure and obtain caches.

Configure Infinispan embedded caches with application.properties in the src/main/resources directory.

Configuration properties are as follows:

Property Default Value Description Runtime/Buildtime

quarkus.infinispan-embedded.xml-config

<empty>

Specifies a valid Infinispan configuration in XML format, either absolute or relative to the working directory.

Runtime overridable

JMX elements are disabled during native runtime so you can use the same configuration file in JVM and native modes.