编辑此页面

Infinispan 客户端扩展参考指南

Infinispan 是一个分布式内存键/值存储,为 Quarkus 应用程序提供高度可配置且可独立扩展的数据层。 此扩展为您提供客户端功能,将运行在 Quarkus 上的应用程序与远程 Infinispan 集群连接起来。 要开始使用 Infinispan,我们建议

  1. 遵循入门教程(5 分钟)。

  2. 运行远程缓存简单代码教程

Infinispan 文档中了解更多信息。

安装

在 Quarkus 项目的根目录中运行以下命令以添加 infinispan-client 扩展

CLI
quarkus extension add infinispan-client
Maven
./mvnw quarkus:add-extension -Dextensions='infinispan-client'
Gradle
./gradlew addExtension --extensions='infinispan-client'

此命令将以下依赖项添加到您的构建文件中

pom.xml
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-infinispan-client</artifactId>
</dependency>
build.gradle
implementation 'io.quarkus:quarkus-infinispan-client'
annotationProcessor 'org.infinispan.protostream:protostream-processor:{infinispan-protostream-version}' (1)
1 Gradle 构建中必须启用基于注解的序列化中的文件生成

连接到 Infinispan

运行服务器

您至少需要一个 Infinispan Server 的运行实例。

开发模式

如果您正在运行 Docker 实例,则可以使用 Infinispan Dev Services 并在无需配置的情况下进行连接。

如果您想使用 Docker 自己运行服务器,请查看 5 分钟的Infinispan 入门教程以运行 Infinispan Server

您还可以下载 ${infinispan.version} Server 裸机发行版,并从发行版文件夹运行以下命令。

$ ./bin/server.sh

Infinispan Server 默认启用身份验证和安全授权,因此您需要创建一个具有权限的用户。

  • 如果您运行 Infinispan Server 镜像,请传递 USER="admin"PASS="password" 参数。

  • 如果您运行 裸机发行版,请使用命令行界面 (CLI),如下所示

    $ ./bin/cli.sh user create admin -p password
生产模式

在 Kubernetes 中,我们建议使用 Infinispan Operator。 此外,请查看 跨站点复制教程。 您将学习如何使用 docker compose(用于本地开发)和 Operator 运行两个单独的 Infinispan 集群。

配置连接

如果您正在运行 Infinispan Server,请添加以下属性以在 src/main/resources 目录中的 application.properties 文件中进行连接。

quarkus.infinispan-client.hosts=localhost:11222 (1)

quarkus.infinispan-client.username=admin (2)
quarkus.infinispan-client.password=password (3)
1 设置 Infinispan Server 地址列表,以分号分隔
2 设置身份验证用户名
3 设置身份验证密码

或者,您可以通过提供单个连接属性来使用 URI 连接

quarkus.infinispan-client.uri=hotrod://admin:password@localhost:11222 (1)
1 设置 Infinispan URI 连接。 以下属性将被忽略:hosts、username 和 password。

使用 Infinispan Dev Services 运行服务器并在无需配置的情况下进行连接。

配置跨站点复制中的备份集群

在高可用性生产部署中,通常有多个 Infinispan 集群分布在世界各地不同的数据中心。 Infinispan 提供了连接这些集群并配置它们之间备份的功能。 这使得可以使用单个连接通过自动化和手动方法在集群之间无缝切换。 要实现此目的,需要配置客户端以定向到备份集群。

quarkus.infinispan-client.hosts=host1:11222;host2:3122 (1)
quarkus.infinispan-client.username=admin
quarkus.infinispan-client.password=password
quarkus.infinispan-client.backup-cluster.nyc-site.hosts=nyc1:11222;nyc2:21222;nyc3:31222 (2)
quarkus.infinispan-client.backup-cluster.lon-site.hosts=lon1:11222;lon2:21222;lon3:31222 (3)
1 设置 Infinispan Server 地址列表,以分号分隔。 这是默认集群。
2 使用提供的地址列表配置备份站点“nyc-site”
3 使用提供的地址列表配置其他备份站点“lon-site”

根据提供的配置,如果默认集群不可用,客户端将无缝过渡到其中一个可访问的备份集群。 此外,还可以选择手动将客户端切换到备用集群

@ApplicationScoped
public class InfinispanExample {
    @Inject
    RemoteCacheManager cacheManager;

    public void doSomething() {
       cacheManager.switchToCluster("nyc-site"); (1)
       cacheManager.switchToCluster("lon-site"); (2)
       cacheManager.switchToDefaultCluster(); (3)
    }
}
1 客户端连接到“nyc-site”。
2 客户端连接到“lon-site”。
3 客户端连接到默认站点。

默认情况下,Protobuf 架构也会上传到备份集群。 但是,可能需要手动处理注册,因为架构在使用过程中可能会随着时间的推移而演变,因此您可以通过将 quarkus.infinispan-client.backup-cluster.YOUR_SITE_NAME.use-schema-registration 配置为 false 来禁用每个备份站点中发生的这种情况。 如果 use-schema-registration 全局属性为 false,则此属性的值将被忽略。

跨站点复制是 Infinispan 提供的一项强大功能,可促进位于地理位置不同的数据中心之间的集群之间的数据备份,甚至跨越各种云提供商。 在 Infinispan 文档中了解更多信息。

默认和命名连接

此扩展允许您配置默认 Infinispan 客户端连接和命名连接。 命名连接对于连接到多个 Infinispan 集群至关重要。

默认连接使用 quarkus.infinispan-client.* 属性进行配置,如上所示。 使用默认连接时,您可以使用普通 @Inject 进行注入

命名客户端使用 quarkus.infinispan-client.<name>.* 属性进行配置

quarkus.infinispan-client.site-lon.hosts=localhost:11222
quarkus.infinispan-client.site-lon.username=admin
quarkus.infinispan-client.site-lon.password=password

quarkus.infinispan-client.site-nyc.hosts=localhost:31222
quarkus.infinispan-client.site-nyc.username=admin
quarkus.infinispan-client.site-nyc.password=password

@InfinispanClientName 限定符与依赖项注入结合使用

@ApplicationScoped
public class InfinispanExample {
    @Inject
    @InfinispanClientName("site-lon")
    RemoteCacheManager rcmLon;

    @Inject
    @InfinispanClientName("site-nyc")
    RemoteCacheManager rmcNyc;
}

Infinispan 健康检查

如果您使用的是 quarkus-smallrye-health 扩展,则 Infinispan 客户端扩展将自动添加就绪状态健康检查以验证连接。

当您访问应用程序的 /q/health/ready 端点时,您将获得有关服务器连接和可用缓存的信息。

可以通过属性 quarkus.infinispan-client.health.enabled 禁用此行为。

使用 OpenTelemetry 进行跟踪

Infinispan 支持通过 OpenTelemetry 对服务器进行检测。 拥有 quarkus-opentelemetry 扩展会将跟踪从 Infinispan 客户端传播到服务器。 可以通过属性 quarkus.infinispan-client.tracing.propagation.enabled 禁用此行为

从客户端创建缓存

当从客户端访问缓存时,如果 Infinispan Server 中不存在该缓存,并且您希望在首次访问时创建它,请使用以下属性之一

quarkus.infinispan-client.cache.magazine.configuration=<distributed-cache><encoding media-type="application/x-protostream"/></distributed-cache> (1)
quarkus.infinispan-client.cache.books.configuration-resource=booksDistributedCache.json (2)
quarkus.infinispan-client.cache.authors.configuration-uri=/file/authorsIndexedCache.yaml (3)
1 “magazine”的 xml 配置(也支持 yaml 和 json)
2 位于 resources 文件夹下的文件名,其中包含“books”缓存的配置
3 提供的文件 URI。 文件 URI 也可以是 resources 下的文件

如果为同一个具有相同 Quarkus 配置文件的缓存配置了 configuration-resourceconfigurationconfiguration-uri,则 configuration-uri 的优先级最高,高于 configuration-resourceconfigurationconfiguration-resource 的优先级高于 configuration

configuration-resource 是构建时属性,该文件将自动包含在本地构建中。 configuration-uri 也可以指向 resources 文件夹下的文件。 但是,该文件不会自动包含在本地可执行文件中,除非您配置属性 quarkus.native.resources.includes

可以以 XML、JSON 或 YAML 格式提供缓存配置。 使用 Infinispan 控制台和缓存配置向导来了解有关 Infinispan 缓存的更多信息并创建引导式配置。

如果未为特定缓存配置任何内容,则将使用以下基本配置创建它

XML
<distributed-cache>
    <encoding media-type="application/x-protostream"/>
</distributed-cache>
JSON
{
    "distributed-cache": {
        "encoding": {
            "media-type": "application/x-protostream"
        }
    }
}
YAML
distributedCache:
  encoding:
    mediaType: "application/x-protostream"

身份验证机制

您可以将以下身份验证机制与 Infinispan 客户端结合使用

  • DIGEST-SHA-512(默认)

  • DIGEST-MD5

  • PLAIN(建议仅与 TLS 加密结合使用)

  • EXTERNAL

其他身份验证机制(例如 SCRAM 和 GSSAPI)尚未通过 Infinispan 客户端验证。

您可以在 Hot Rod 端点身份验证机制中找到有关配置身份验证的更多信息。

如果您使用依赖项注入,则必须在 hotrod-client.properties 文件中配置身份验证。

序列化(键值类型支持)

默认情况下,客户端将支持以下类型的键和值:byte[]、原始包装器(例如 Integer、Long、Double)、String、Date 和 Instant。 用户类型需要一些此处详细说明的额外步骤。 假设我们有以下用户类

Author.java
public record Author(String name, String surname) {
}
Book.java
public record Book(String title,
                   String description,
                   int publicationYear,
                   Set<Author> authors,
                   Type bookType,
                   BigDecimal price) {
}

用户类型的序列化使用基于 protobuf 的库,称为 Protostream

Infinispan 缓存可以存储不同编码的键和值,但建议使用协议缓冲区 (Protobuf)

有关更多信息,请参阅我们的缓存编码和编组指南。

基于注解的序列化

这可以通过将 protostream 注解添加到您的用户类来自动完成。 此外,还需要一个带注解的 Initializer 接口,用于控制支持类的生成方式。

以下是应该如何更改先前类的示例

Author.java
@Proto (1)
public record Author(String name, String surname) { (2)
}
1 自 Protostream 5.0 起,需要单个注解来生成默认映射
2 自 Protostream 5.0 起,支持记录
Type.java
@Proto
public enum Type { (1)
    FANTASY,
    PROGRAMMING
}
1 支持枚举
Book.java
@Proto
@Indexed (1)
public record Book(@Text String title, (2)
                   @Keyword(projectable = true, sortable = true, normalizer = "lowercase", indexNullAs = "unnamed", norms = false) (3)
                   String description,
                   int publicationYear,
                   Set<Author> authors, (4)
                   Type bookType,
                   BigDecimal price) { (5)
}
1 指示实体将被索引。 执行分布式全文查询操作所必需。
2 指示应将 title 索引为文本
3 指示 description 字段应索引为关键字。
4 支持集合
5 Protostream 为常用类型(如 BigDecimal)提供默认的 Protobuf 映射器,这些类型包含在 org.infinispan.protostream.types 包中。

然后,所需的只是一个非常简单的 GeneratedSchema 接口,该接口上有一个注解来指定配置设置

BooksSchema.java
import org.infinispan.protostream.GeneratedSchema;
import org.infinispan.protostream.annotations.ProtoSchema;
import org.infinispan.protostream.types.java.math.BigDecimalAdapter;

@ProtoSchema(includeClasses = { Book.class, Author.class, BigDecimalAdapter.class }, schemaPackageName = "book_sample")
interface BookStoreSchema extends GeneratedSchema {
}

您可以使用 basePackages 属性扫描包含类的完整包。 您可以使用 @Protofield 注解覆盖默认的编组。

因此,在这种情况下,我们将自动为包含的类生成编组器和架构,并将它们自动放置在架构包中。 不需要提供包,但是如果您使用 Infinispan 搜索功能,则必须知道生成的包。

在 Quarkus 中,不应在 ProtoSchema 注解上设置 schemaFileNameschemaFilePath 属性。 设置任何属性都会导致本地运行时错误。

自定义序列化

当用户可以注解他们的类时,建议使用前面的方法。 遗憾的是,用户可能无法注解他们将放入缓存的所有类。 在这种情况下,您必须定义您的架构并自己创建 Marshaller。

Protobuf 架构

您可以通过以下两种方式之一提供 protobuf 架构。

  1. Proto 文件
    您可以将 .proto 文件放在项目的 META-INF 目录中。 这些文件将在初始化时自动被拾取。

    library.proto
    package book_sample;
    
    message Book {
      required string title = 1;
      required string description = 2;
      required int32 publicationYear = 3; // no native Date type available in Protobuf
      repeated Author authors = 4;
      requited double price = 5; // no native BigDecimal type available in Protobuf but you can use the adapter
    }
    
    message Author {
      required string name = 1;
      required string surname = 2;
    }
  2. 在代码中
    或者,您可以通过定义 org.infinispan.protostream.schema.Schema 类型的生成 bean,直接在用户代码中定义 proto 架构。

       @Produces
       Schema bookSchema() {
            return new Schema.Builder("book.proto")
                    .packageName("book_sample")
                    .addMessage("Author")
                         .addField(Type.Scalar.STRING, "name", 1)
                         .addField(Type.Scalar.STRING, "surname", 2)
                    .addMessage("Book")
                         .addField(Type.Scalar.STRING, "title", 1)
                         .addField(Type.Scalar.STRING, "description", 2)
                         .addField(Type.Scalar.INT32, "publicationYear", 3)
                         .addRepeatedField(Type.create("Author"), "author", 4)
                         .addField(Type.Scalar.DOUBLE, "price", 5)
                    .build();
        }
用户 Marshaller

最后要做的是为 proto 架构中定义的每个用户类提供一个 org.infinispan.protostream.MessageMarshaller 实现。 然后通过 @Produces 以与上面的基于代码的 proto 架构定义类似的方式提供该类。

以下是我们 Author & Book 类的 Marshaller 类。

类型名称必须完全匹配 <protobuf package>.<protobuf message>
AuthorMarshaller.java
public class AuthorMarshaller implements MessageMarshaller<Author> {

   @Override
   public String getTypeName() {
      return "book_sample.Author";
   }

   @Override
   public Class<? extends Author> getJavaClass() {
      return Author.class;
   }

   @Override
   public void writeTo(ProtoStreamWriter writer, Author author) throws IOException {
      writer.writeString("name", author.getName());
      writer.writeString("surname", author.getSurname());
   }

   @Override
   public Author readFrom(ProtoStreamReader reader) throws IOException {
      String name = reader.readString("name");
      String surname = reader.readString("surname");
      return new Author(name, surname);
   }
}
BookMarshaller.java
public class BookMarshaller implements MessageMarshaller<Book> {

   @Override
   public String getTypeName() {
      return "book_sample.Book";
   }

   @Override
   public Class<? extends Book> getJavaClass() {
      return Book.class;
   }

   @Override
   public void writeTo(ProtoStreamWriter writer, Book book) throws IOException {
      writer.writeString("title", book.getTitle());
      writer.writeString("description", book.getDescription());
      writer.writeInt("publicationYear", book.getPublicationYear());
      writer.writeCollection("authors", book.getAuthors(), Author.class);
      writer.writeDouble("price", book.getPrice().doubleValue());
   }

   @Override
   public Book readFrom(ProtoStreamReader reader) throws IOException {
      String title = reader.readString("title");
      String description = reader.readString("description");
      int publicationYear = reader.readInt("publicationYear");
      Set<Author> authors = reader.readCollection("authors", new HashSet<>(), Author.class);
      BigDecimal price = BigDecimal.valueOf(reader.readDouble("price"));
      return new Book(title, description, publicationYear, authors, price);
   }
}

您可以通过定义以下内容来传递 marshaller

   @Produces
   MessageMarshaller authorMarshaller() {
      return new AuthorMarshaller();
   }

   @Produces
   MessageMarshaller bookMarshaller() {
      return new BookMarshaller();
   }
上述生成的 Marshaller 方法必须返回没有类型的 MessageMarshaller,否则将找不到它。

依赖项注入

正如您在上面看到的,我们支持用户注入 Marshaller 配置。 您可以使用 Infinispan 客户端扩展进行反向操作,为 RemoteCacheManagerRemoteCache 对象提供注入。 有一个全局 RemoteCacheManager 采用上述部分中设置的所有配置参数。

注入这些组件非常简单。 您需要做的只是将 @Inject 注解添加到字段、构造函数或方法。 在下面的代码中,我们利用字段和构造函数注入。

SomeClass.java
    @Inject
    SomeClass(RemoteCacheManager remoteCacheManager) {
       this.remoteCacheManager = remoteCacheManager;
    }

    @Inject
    @Remote("myCache")
    RemoteCache<String, Book> cache;

    RemoteCacheManager remoteCacheManager;

如果您注意到 RemoteCache 声明有一个名为 Remote 的附加注解。 这是一个 限定符注解,允许您指定将注入哪个命名缓存。 此注解不是必需的,如果未提供该注解,则将注入默认缓存。 RemoteCacheManager 和 RemoteCache bean 范围为 @ApplicationScoped

对于非默认连接,将限定符 @InfinispanClientName@Remote 组合在一起。

SomeClass.java
    @Inject
    @InfinispanClientName("lon-site")
    @Remote("books")
    RemoteCache<String, Book> lonBooks;

    @Inject
    @InfinispanClientName("nyc-site")
    @Remote("books")
    RemoteCache<String, Book> nycBooks;
可能支持其他类型的注入,请参阅其他部分以获取更多信息

模拟支持

Quarkus 支持使用两种不同的方法来使用模拟对象。 您可以使用 CDI 替代项来模拟所有测试类的 bean,也可以使用 QuarkusMock 来模拟每个测试的 bean。 查看测试入门指南以获取更多信息。

可以模拟 RemoteCacheManager 和 RemoteCache。

BookService.java
@ApplicationScoped
public class BookService {

   @Inject
   @Remote("books")
   RemoteCache<String, Book> books; (1)

   public String getBookDescriptionById(String id) {
      Book book = books.get(id);
      if (book == null) {
         return "default";
      }

      return book.getDescription();
   }
}
1 使用依赖项注入连接到 books 缓存

在测试类中,可以模拟 RemoteCache。

BookServiceTest.java
@QuarkusTest
public class BookServiceTest {

    @Inject
    BookService bookService;

    @InjectMock (1)
    @Remote("books")
    RemoteCache<String, Book> bookRemoteCache;

    @Test
    public void mockRemoteCache() {
        Mockito.when(bookRemoteCache.get("harry_potter")).thenReturn(new Book(... "Best saga ever");(2)

        Assertions.assertThat(bookService.getBookDescriptionById("harry_potter")).isEqualTo("Best saga ever");(3)
    }
}
1 注入一个模拟而不是 RemoteCache bean
2 使用 Mockito 模拟 RemoteCache 的调用
3 断言服务调用

向 Infinispan Server 注册 Protobuf 架构

您需要向 Infinispan Server 注册生成的 Protobuf 架构,以执行查询或从 Protobuf 转换为其他媒体类型,例如 JSON

您可以通过登录到 http://SERVER_HOST:SERVER_PORT(例如 https://:11222)的 Infinispan 控制台,查看 Schemas 选项卡下的架构。

查看 Infinispan Dev Services 指南以连接到 Infinispan Dev Services 服务器。

默认情况下,以此方式生成的 Protobuf 架构将在客户端首次连接时由此扩展注册。 但是,可能需要手动处理注册,因为架构在使用过程中可能会随着时间的推移而演变,因此您可以通过将 quarkus.infinispan-client.use-schema-registration 配置为 false 来禁用这种情况。

要手动配置架构,请使用 Kubernetes 部署的 Infinispan Operator、Infinispan 控制台、REST APIHot Rod Java Client

使用注解进行缓存

Infinispan 缓存注解在此扩展中已弃用,将被删除。 使用或替换您的注解,方法是使用 Infinispan 缓存扩展。 更新您的导入语句以使用来自 io.quarkus.cache 包而不是 io.quarkus.infinispan.client 的注解。

Infinispan Client 扩展提供了一组注解,这些注解可以在 CDI 管理的 bean 中使用,以启用 Infinispan 的缓存功能。

缓存注解不允许在私有方法上使用。 它们可以与任何其他访问修饰符(包括包私有(没有显式修饰符))一起正常工作。

@CacheResult

尽可能从缓存中加载方法结果,而不执行方法体。

当调用使用 @CacheResult 注解的方法时,Quarkus 将使用方法参数作为缓存键,并检查缓存中是否已调用该方法。 不允许使用具有多个参数的方法。 对于复合键,请定义一个 Protobuf 架构,该架构将保存多个值。 如果在缓存中找到值,则返回该值,并且永远不会实际执行带注解的方法。 如果未找到值,则调用带注解的方法,并将返回的值存储在缓存中使用计算出的键。 此注解不能用于返回 void 的方法。

与 Quarkus-Cache 扩展不同,Infinispan Client 扩展还无法缓存 null 值。

@CacheInvalidate

从缓存中删除一个条目。

当调用使用 @CacheInvalidate 注解的方法时,Infinispan 将使用方法参数作为缓存键,以尝试从缓存中删除现有条目。 如果该键未标识任何缓存条目,则不会发生任何情况。

@CacheInvalidateAll

当调用使用 @CacheInvalidateAll 注解的方法时,Infinispan 将从缓存中删除所有条目。

查询

只要配置了上面的 ProtoStreamMarshaller,Infinispan 客户端就支持索引和非索引搜索。 这允许用户基于 proto 架构的属性查询 出于性能原因,建议使用索引查询

XML
<distributed-cache name="books" statistics="true">
    <!-- other configuration -->
	<indexing enabled="true" storage="filesystem" startup-mode="PURGE">
		<indexed-entities>
			<indexed-entity>book_sample.Book</indexed-entity>
		</indexed-entities>
	</indexing>
</distributed-cache>
JSON
{
  "books": {
    "distributed-cache": {
      ...
      "indexing": {
        "enabled": true,
        "storage": "filesystem",
        "startupMode": "PURGE",
        "indexed-entities": [
          "book_sample.Book"
        ]
      }
    }
  }
}
YAML
distributedCache:
  # other configuration
  indexing:
    enabled: "true"
    storage: "filesystem"
    startupMode: "PURGE"
    indexedEntities:
      - "book_sample.Book"

查询构建在设置 ProtoStreamMarshaller 时可以配置的 proto 定义之上。 上面的任何一种序列化方法都会在启动时自动向服务器注册架构,这意味着您将自动获得查询存储在远程 Infinispan Server 中的对象的能力。

Book.java
@Indexed (1)
public class Book {

    @ProtoFactory
    public Book(String title, String description, int publicationYear, Set<Author> authors) {
      ...
    }

    @ProtoField(number = 1)
    @Text (2)
    public String getTitle() {
        return title;
    }

    @ProtoField(number = 2)
    @Keyword(projectable = true, sortable = true, normalizer = "lowercase", indexNullAs = "unnamed", norms = false) (3)
    public String getDescription() {
        return description;
    }
    ...
1 @Indexed 注解使 POJO 可索引
2 @Basic 注解用于没有任何特殊转换的索引字段
3 @Keyword 注解用于将规范化器应用于文本字段

您可以将 Query DSL 或 Ickle 查询语言与 Quarkus Infinispan 客户端扩展一起使用。

Query.java
@Inject
@Remote("books")
RemoteCache<String, Book> booksCache; (1)

Query<Book> query = booksCache.query("from book_sample.Book b where b.authors.name like '%" + name + "%'"); (2)
List<Book> list = query.execute().list();
1 注入 books 缓存
2 对书籍作者姓名执行全文查询
您可以在 Infinispan 文档中阅读有关查询的更多信息。

在 Quarkus 3.9 和 Infinispan 15 集成之前,通过调用以下代码来执行查询:.Query.java

QueryFactory queryFactory = Search.getQueryFactory(booksCache); (1)
Query query = queryFactory.create("from book_sample.Book");
List<Book> list = query.execute().list();
1 3.9 中的重大更改

此代码将不再起作用,因为 RemoteCache 现在是一个 @ApplicationScoped 代理 bean。 Search.getQueryFactory 将引发 ClassCastException。 通过使用 RemoteCache API 中的 query 方法来删除不必要的间接引用,如下所示。

Query<Book> query = booksCache.<Book>query("from book_sample.Book");
List<Book> list = query.execute().list();

计数器

Infinispan 也有计数器的概念,Quarkus Infinispan 客户端开箱即用支持它们。

Quarkus Infinispan 客户端扩展允许直接进行 CounterManager 的依赖项注入。 您需要做的只是注解您的字段、构造函数或方法,您就可以轻松获得它。 然后,您可以像往常一样使用计数器。

@Inject
CounterManager counterManager;

您可以在 Infinispan 文档中阅读有关集群计数器的更多信息。

近缓存

默认情况下禁用近缓存,但您可以通过配置以下属性在每个缓存基本启用它

quarkus.infinispan-client.cache.books.near-cache-mode=INVALIDATED (1)
quarkus.infinispan-client.cache.books.near-cache-max-entries=200 (2)
quarkus.infinispan-client.cache.books.near-cache-use-bloom-filter=true (3)
1 通过将模式设置为 INVALIDATED 来为“books”缓存启用近缓存
2 设置“books”缓存的近缓存在发生驱逐之前可以容纳的最大条目数
3 为“books”缓存启用布隆过滤器

有界近缓存

您应该始终使用有界近缓存,方法是指定它们可以包含的最大条目数。

布隆过滤器

如果您需要通过减少无效消息的总数来优化写入操作的性能,请启用布隆过滤器。 布隆过滤器驻留在 Infinispan Server 上,并跟踪客户端已请求的条目。 它们不能与无界近缓存一起使用:启用布隆过滤器时必须定义最大条目数。

加密

此时加密需要额外的步骤才能正常工作。

第一步是将 application.properties 文件配置为指向您的信任库和/或密钥库。 此处此处对此进行了更详细的说明。

默认情况下,Infinispan Client 扩展启用 SSL/TLS。 您可以在 将 SSL 与本机可执行文件一起使用中阅读有关此内容的更多信息。

SSL 主机名验证

为了防止 MITM 攻击,启用 SSL 时,默认情况下在 Infinispan 中启用 SSL 主机名验证。 在这种情况下,必须配置 SNI 主机名才能启动客户端。

quarkus.infinispan-client.sni-host-name=localhost (1)
1 设置 SNI 主机名

可以通过禁用验证来更改此行为。

quarkus.infinispan-client.ssl-host-name-validation=false (1)
1 禁用 ssl 主机名验证

其他功能

Infinispan Client 还有一些此处未提及的其他功能。 这意味着此功能未在 Quarkus 环境中进行测试,并且它们可能有效也可能无效。 如果您需要添加这些功能,请告诉我们!

Infinispan 的 Dev Services

当您在开发模式或测试模式下使用 infinispan-client 扩展时,Quarkus 会自动启动 Infinispan 服务器并配置您的应用程序。

启用/禁用 Infinispan 的 Dev Services

Infinispan Dev Services 指南中了解更多信息。

共享服务器

如果您在开发模式下运行多个应用程序,Quarkus 将共享 Infinispan 代理。 Infinispan 的 Dev Services 为您在 开发 模式下运行的多个 Quarkus 应用程序实现了一个服务发现机制,以共享一个代理。

Infinispan 的 Dev Services 使用 quarkus-dev-service-infinispan 标签启动容器,该标签用于标识容器。

如果您需要多个(共享的)Infinispan 服务器,您可以配置 quarkus.infinispan-client.devservices.service-name 属性并指示服务器名称。 它查找具有相同值的容器,如果找不到任何容器,则启动一个新容器。 默认服务名称为 infinispan

默认情况下,在开发模式下启用共享,但在测试模式下禁用共享。 您可以使用 quarkus.infinispan-client.devservices.shared=false 禁用共享。

设置端口

默认情况下,Infinispan 的 Dev Services 选择一个随机端口并配置应用程序。 您可以通过配置 quarkus.infinispan-client.devservices.port 属性来设置端口。

配置参考

构建时固定的配置属性 - 所有其他配置属性都可以在运行时覆盖

配置属性

类型

默认

设置 marshallerClass。 默认为 ProtoStreamMarshaller

环境变量:QUARKUS_INFINISPAN_CLIENT_MARSHALLER_CLASS

显示更多

字符串

如果存在 smallrye-health 扩展,是否发布健康检查。

这是一个全局设置,不特定于 Infinispan Client。

环境变量:QUARKUS_INFINISPAN_CLIENT_HEALTH_ENABLED

显示更多

布尔值

true

设置要连接的正在运行的 Infinispan 服务器的 URI。 hotrod://:11222@admin:password 如果提供 hostsusernamepassword 将被忽略。

环境变量:QUARKUS_INFINISPAN_CLIENT_URI

显示更多

字符串

设置要连接的主机名/端口。 每一个都以分号分隔(例如 host1:11222;host2:11222)。

环境变量:QUARKUS_INFINISPAN_CLIENT_HOSTS

显示更多

字符串

设置身份验证使用的客户端智能 可用值:* BASIC - 表示客户端不处理服务器拓扑更改,因此只会使用配置时提供的服务器列表。 * TOPOLOGY_AWARE - 如果您不希望客户端向远程 TLS 主机出示任何证书,请使用此提供程序。 * HASH_DISTRIBUTION_AWARE - 类似于 TOPOLOGY_AWARE,但额外的优势是涉及密钥的每个请求都将被路由到作为主所有者的服务器,这大大提高了性能。 这是默认值。

环境变量:QUARKUS_INFINISPAN_CLIENT_CLIENT_INTELLIGENCE

显示更多

字符串

HASH_DISTRIBUTION_AWARE

启用或禁用身份验证。 在连接到没有身份验证的 Infinispan Server 时,将其设置为 false。 部署。 默认为“true”。

环境变量:QUARKUS_INFINISPAN_CLIENT_USE_AUTH

显示更多

布尔值

true

设置身份验证使用的用户名。

环境变量:QUARKUS_INFINISPAN_CLIENT_USERNAME

显示更多

字符串

设置身份验证使用的密码。

环境变量:QUARKUS_INFINISPAN_CLIENT_PASSWORD

显示更多

字符串

设置身份验证使用的域

环境变量:QUARKUS_INFINISPAN_CLIENT_AUTH_REALM

显示更多

字符串

default

设置身份验证使用的服务器名称

环境变量:QUARKUS_INFINISPAN_CLIENT_AUTH_SERVER_NAME

显示更多

字符串

infinispan

设置身份验证使用的 SASL 机制。 可用值:* DIGEST-SHA-512 - 使用 SHA-512 哈希算法安全地哈希和验证凭据。 这是默认值。 * DIGEST-MD5 - 除了随机数之外,还使用 MD5 哈希算法来加密凭据。 * EXTERNAL - 使用客户端证书向 Infinispan Server 提供有效身份并启用加密。 * PLAIN - 以类似于 HTTP BASIC 身份验证的方式在线上以纯文本(未加密)发送凭据。 您应该仅将 PLAIN 身份验证与 TLS 加密结合使用。

环境变量:QUARKUS_INFINISPAN_CLIENT_SASL_MECHANISM

显示更多

字符串

DIGEST-SHA-512

指定用于创建 SSLContext 的密钥库的文件名。 您还需要指定 keyStorePassword。 设置此属性会隐式启用 SSL/TLS。

环境变量:QUARKUS_INFINISPAN_CLIENT_KEY_STORE

显示更多

字符串

指定打开密钥库所需的密码。 您还需要指定密钥库。 设置此属性会隐式启用 SSL/TLS。

环境变量:QUARKUS_INFINISPAN_CLIENT_KEY_STORE_PASSWORD

显示更多

字符串

指定密钥库的类型,例如 PKCS12。

环境变量:QUARKUS_INFINISPAN_CLIENT_KEY_STORE_TYPE

显示更多

字符串

设置用于标识密钥库中特定密钥对以进行安全连接的唯一名称。

环境变量:QUARKUS_INFINISPAN_CLIENT_KEY_ALIAS

显示更多

字符串

指定用于创建 SSLContext 的信任存储文件的文件名。还需要指定 trustStorePassword。设置此属性会隐式启用 SSL/TLS。

环境变量:QUARKUS_INFINISPAN_CLIENT_TRUST_STORE

显示更多

字符串

指定打开信任存储所需的密码。还需要指定 trustStore。设置此属性会隐式启用 SSL/TLS。

环境变量:QUARKUS_INFINISPAN_CLIENT_TRUST_STORE_PASSWORD

显示更多

字符串

指定信任存储的类型,例如 JKS 或 JCEKS。如果启用了 trustStore,则默认为 JKS。

环境变量:QUARKUS_INFINISPAN_CLIENT_TRUST_STORE_TYPE

显示更多

字符串

配置安全套接字协议。设置此属性会隐式启用 SSL/TLS。

环境变量:QUARKUS_INFINISPAN_CLIENT_SSL_PROTOCOL

显示更多

字符串

设置 SSL 提供程序。例如 BCFIPS。设置此项会隐式启用 SSL/TLS。

环境变量:QUARKUS_INFINISPAN_CLIENT_SSL_PROVIDER

显示更多

字符串

配置密码。设置此属性会隐式启用 SSL/TLS。

环境变量:QUARKUS_INFINISPAN_CLIENT_SSL_CIPHERS

显示更多

字符串列表

执行 SSL 主机名验证。默认为 true。

环境变量:QUARKUS_INFINISPAN_CLIENT_SSL_HOST_NAME_VALIDATION

显示更多

布尔值

SNI 主机名。启用 SSL 且主机名验证为 true 时,此项为必需项。

环境变量:QUARKUS_INFINISPAN_CLIENT_SNI_HOST_NAME

显示更多

字符串

配置套接字超时。

环境变量:QUARKUS_INFINISPAN_CLIENT_SOCKET_TIMEOUT

显示更多

整数

如果存在 Opentelemetry 扩展,是否启用跟踪传播。默认情况下,上下文的传播是从客户端传播到 Infinispan 服务器。

环境变量:QUARKUS_INFINISPAN_CLIENT_TRACING_PROPAGATION_ENABLED

显示更多

布尔值

启用或禁用 Protobuf 生成的模式上传到服务器。当您需要在服务器端处理 Protobuf 模式的生命周期时,请将其设置为“false”。默认为“true”。这是一个全局设置,不特定于 Infinispan 客户端。

环境变量:QUARKUS_INFINISPAN_CLIENT_USE_SCHEMA_REGISTRATION

显示更多

布尔值

true

启动客户端并连接到服务器。如果设置为 false,您需要自行启动它。

环境变量:QUARKUS_INFINISPAN_CLIENT_START_CLIENT

显示更多

布尔值

true

以 XML、JSON 或 YAML 格式缓存配置文件在构建时定义,以便在首次访问时创建缓存。用户定义属性的示例。cacheConfig.xml 文件位于“resources”文件夹中:quarkus.infinispan-client.cache.bookscache.configuration-resource=cacheConfig.xml

环境变量:QUARKUS_INFINISPAN_CLIENT_CACHE__CACHE__CONFIGURATION_RESOURCE

显示更多

字符串

以嵌入式 XML 格式缓存配置,以便在首次访问时创建缓存。如果为同一缓存名称提供了 configuration-uri,则将被忽略。用户定义属性的示例:quarkus.infinispan-client.cache.bookscache.configuration=

环境变量:QUARKUS_INFINISPAN_CLIENT_CACHE__CACHE__CONFIGURATION

显示更多

字符串

以 XML、Json 或 YAML 格式缓存配置文件,其路径将转换为 URI 以在首次访问时创建缓存。用户定义属性的示例。cacheConfig.xml 文件位于“resources”文件夹中:quarkus.infinispan-client.cache.bookscache.configuration-uri=cacheConfig.xml

环境变量:QUARKUS_INFINISPAN_CLIENT_CACHE__CACHE__CONFIGURATION_URI

显示更多

字符串

为指定的缓存本地保留的最大条目数。

环境变量:QUARKUS_INFINISPAN_CLIENT_CACHE__CACHE__NEAR_CACHE_MAX_ENTRIES

显示更多

整数

设置 Infinispan 客户端使用的近缓存模式。可用值: * DISABLED - 表示禁用近缓存。这是默认值。 * INVALIDATED - 表示近缓存已失效,因此当条目在服务器端更新或删除时,将向客户端发送失效消息以将其从近缓存中删除。

环境变量:QUARKUS_INFINISPAN_CLIENT_CACHE__CACHE__NEAR_CACHE_MODE

显示更多

disabled, invalidated

为近缓存启用 Bloom 过滤器。Bloom 过滤器通过减少失效消息的总数来优化写入操作的性能。

环境变量:QUARKUS_INFINISPAN_CLIENT_CACHE__CACHE__NEAR_CACHE_USE_BLOOM_FILTER

显示更多

布尔值

设置要连接的主机名/端口。每个主机名/端口都用分号分隔(例如 hostA:11222;hostB:11222)。

环境变量:QUARKUS_INFINISPAN_CLIENT_BACKUP_CLUSTER__BACKUP_CLUSTER__HOSTS

显示更多

字符串

必需

设置身份验证使用的客户端智能 可用值:* BASIC - 表示客户端不处理服务器拓扑更改,因此只会使用配置时提供的服务器列表。 * TOPOLOGY_AWARE - 如果您不希望客户端向远程 TLS 主机出示任何证书,请使用此提供程序。 * HASH_DISTRIBUTION_AWARE - 类似于 TOPOLOGY_AWARE,但额外的优势是涉及密钥的每个请求都将被路由到作为主所有者的服务器,这大大提高了性能。 这是默认值。

环境变量:QUARKUS_INFINISPAN_CLIENT_BACKUP_CLUSTER__BACKUP_CLUSTER__CLIENT_INTELLIGENCE

显示更多

字符串

HASH_DISTRIBUTION_AWARE

启用或禁用 Protobuf 生成的模式上传到备份。当您需要在服务器端处理 Protobuf 模式的生命周期时,请将其设置为“false”。默认为“true”。如果全局设置设置为 false,则此设置将被忽略。

环境变量:QUARKUS_INFINISPAN_CLIENT_BACKUP_CLUSTER__BACKUP_CLUSTER__USE_SCHEMA_REGISTRATION

显示更多

布尔值

true

命名客户端

类型

默认

设置 marshallerClass。 默认为 ProtoStreamMarshaller

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__MARSHALLER_CLASS

显示更多

字符串

以 XML、JSON 或 YAML 格式缓存配置文件在构建时定义,以便在首次访问时创建缓存。用户定义属性的示例。cacheConfig.xml 文件位于“resources”文件夹中:quarkus.infinispan-client.cache.bookscache.configuration-resource=cacheConfig.xml

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__CACHE__CACHE__CONFIGURATION_RESOURCE

显示更多

字符串

设置要连接的正在运行的 Infinispan 服务器的 URI。 hotrod://:11222@admin:password 如果提供 hostsusernamepassword 将被忽略。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__URI

显示更多

字符串

设置要连接的主机名/端口。 每一个都以分号分隔(例如 host1:11222;host2:11222)。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__HOSTS

显示更多

字符串

设置身份验证使用的客户端智能 可用值:* BASIC - 表示客户端不处理服务器拓扑更改,因此只会使用配置时提供的服务器列表。 * TOPOLOGY_AWARE - 如果您不希望客户端向远程 TLS 主机出示任何证书,请使用此提供程序。 * HASH_DISTRIBUTION_AWARE - 类似于 TOPOLOGY_AWARE,但额外的优势是涉及密钥的每个请求都将被路由到作为主所有者的服务器,这大大提高了性能。 这是默认值。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__CLIENT_INTELLIGENCE

显示更多

字符串

HASH_DISTRIBUTION_AWARE

启用或禁用身份验证。 在连接到没有身份验证的 Infinispan Server 时,将其设置为 false。 部署。 默认为“true”。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__USE_AUTH

显示更多

布尔值

true

设置身份验证使用的用户名。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__USERNAME

显示更多

字符串

设置身份验证使用的密码。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__PASSWORD

显示更多

字符串

设置身份验证使用的域

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__AUTH_REALM

显示更多

字符串

default

设置身份验证使用的服务器名称

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__AUTH_SERVER_NAME

显示更多

字符串

infinispan

设置身份验证使用的 SASL 机制。 可用值:* DIGEST-SHA-512 - 使用 SHA-512 哈希算法安全地哈希和验证凭据。 这是默认值。 * DIGEST-MD5 - 除了随机数之外,还使用 MD5 哈希算法来加密凭据。 * EXTERNAL - 使用客户端证书向 Infinispan Server 提供有效身份并启用加密。 * PLAIN - 以类似于 HTTP BASIC 身份验证的方式在线上以纯文本(未加密)发送凭据。 您应该仅将 PLAIN 身份验证与 TLS 加密结合使用。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__SASL_MECHANISM

显示更多

字符串

DIGEST-SHA-512

指定用于创建 SSLContext 的密钥库的文件名。 您还需要指定 keyStorePassword。 设置此属性会隐式启用 SSL/TLS。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__KEY_STORE

显示更多

字符串

指定打开密钥库所需的密码。 您还需要指定密钥库。 设置此属性会隐式启用 SSL/TLS。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__KEY_STORE_PASSWORD

显示更多

字符串

指定密钥库的类型,例如 PKCS12。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__KEY_STORE_TYPE

显示更多

字符串

设置用于标识密钥库中特定密钥对以进行安全连接的唯一名称。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__KEY_ALIAS

显示更多

字符串

指定用于创建 SSLContext 的信任存储文件的文件名。还需要指定 trustStorePassword。设置此属性会隐式启用 SSL/TLS。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__TRUST_STORE

显示更多

字符串

指定打开信任存储所需的密码。还需要指定 trustStore。设置此属性会隐式启用 SSL/TLS。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__TRUST_STORE_PASSWORD

显示更多

字符串

指定信任存储的类型,例如 JKS 或 JCEKS。如果启用了 trustStore,则默认为 JKS。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__TRUST_STORE_TYPE

显示更多

字符串

配置安全套接字协议。设置此属性会隐式启用 SSL/TLS。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__SSL_PROTOCOL

显示更多

字符串

设置 SSL 提供程序。例如 BCFIPS。设置此项会隐式启用 SSL/TLS。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__SSL_PROVIDER

显示更多

字符串

配置密码。设置此属性会隐式启用 SSL/TLS。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__SSL_CIPHERS

显示更多

字符串列表

执行 SSL 主机名验证。默认为 true。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__SSL_HOST_NAME_VALIDATION

显示更多

布尔值

SNI 主机名。启用 SSL 且主机名验证为 true 时,此项为必需项。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__SNI_HOST_NAME

显示更多

字符串

配置套接字超时。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__SOCKET_TIMEOUT

显示更多

整数

如果存在 Opentelemetry 扩展,是否启用跟踪传播。默认情况下,上下文的传播是从客户端传播到 Infinispan 服务器。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__TRACING_PROPAGATION_ENABLED

显示更多

布尔值

以嵌入式 XML 格式缓存配置,以便在首次访问时创建缓存。如果为同一缓存名称提供了 configuration-uri,则将被忽略。用户定义属性的示例:quarkus.infinispan-client.cache.bookscache.configuration=

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__CACHE__CACHE__CONFIGURATION

显示更多

字符串

以 XML、Json 或 YAML 格式缓存配置文件,其路径将转换为 URI 以在首次访问时创建缓存。用户定义属性的示例。cacheConfig.xml 文件位于“resources”文件夹中:quarkus.infinispan-client.cache.bookscache.configuration-uri=cacheConfig.xml

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__CACHE__CACHE__CONFIGURATION_URI

显示更多

字符串

为指定的缓存本地保留的最大条目数。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__CACHE__CACHE__NEAR_CACHE_MAX_ENTRIES

显示更多

整数

设置 Infinispan 客户端使用的近缓存模式。可用值: * DISABLED - 表示禁用近缓存。这是默认值。 * INVALIDATED - 表示近缓存已失效,因此当条目在服务器端更新或删除时,将向客户端发送失效消息以将其从近缓存中删除。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__CACHE__CACHE__NEAR_CACHE_MODE

显示更多

disabled, invalidated

为近缓存启用 Bloom 过滤器。Bloom 过滤器通过减少失效消息的总数来优化写入操作的性能。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__CACHE__CACHE__NEAR_CACHE_USE_BLOOM_FILTER

显示更多

布尔值

设置要连接的主机名/端口。每个主机名/端口都用分号分隔(例如 hostA:11222;hostB:11222)。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__BACKUP_CLUSTER__BACKUP_CLUSTER__HOSTS

显示更多

字符串

必需

设置身份验证使用的客户端智能 可用值:* BASIC - 表示客户端不处理服务器拓扑更改,因此只会使用配置时提供的服务器列表。 * TOPOLOGY_AWARE - 如果您不希望客户端向远程 TLS 主机出示任何证书,请使用此提供程序。 * HASH_DISTRIBUTION_AWARE - 类似于 TOPOLOGY_AWARE,但额外的优势是涉及密钥的每个请求都将被路由到作为主所有者的服务器,这大大提高了性能。 这是默认值。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__BACKUP_CLUSTER__BACKUP_CLUSTER__CLIENT_INTELLIGENCE

显示更多

字符串

HASH_DISTRIBUTION_AWARE

启用或禁用 Protobuf 生成的模式上传到备份。当您需要在服务器端处理 Protobuf 模式的生命周期时,请将其设置为“false”。默认为“true”。如果全局设置设置为 false,则此设置将被忽略。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__BACKUP_CLUSTER__BACKUP_CLUSTER__USE_SCHEMA_REGISTRATION

显示更多

布尔值

true

开发服务

类型

默认

开发服务是否已被显式启用或禁用。通常默认启用开发服务,除非存在现有配置。

当启用开发服务时,Quarkus 将尝试在开发或测试模式下运行并且 Docker 正在运行时自动配置和启动数据库。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__DEVSERVICES_ENABLED

显示更多

布尔值

true

当配置为空时,将自动创建一个 Infinispan 默认客户端以连接到正在运行的开发服务。但是,在某些情况下,创建此客户端是不必要的,但我们仍然需要启动 Infinispan 服务器。在这种情况下,此属性用于确定是否应默认由扩展创建客户端。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__DEVSERVICES_CREATE_DEFAULT_CLIENT

显示更多

布尔值

true

开发服务将侦听的可选固定端口。

如果未定义,将随机选择端口。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__DEVSERVICES_PORT

显示更多

整数

指示 Quarkus 开发服务管理的 Infinispan 服务器是否共享。共享时,Quarkus 使用基于标签的服务发现来查找正在运行的容器。如果找到匹配的容器,则使用它,因此不会启动第二个容器。否则,Infinispan 的开发服务将启动一个新容器。

发现使用 quarkus-dev-service-infinispan 标签。该值使用 service-name 属性进行配置。

容器共享仅在开发模式下使用。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__DEVSERVICES_SHARED

显示更多

布尔值

true

附加到启动的容器的 quarkus-dev-service-infinispan 标签的值。当 shared 设置为 true 时,将使用此属性。在这种情况下,在启动容器之前,Infinispan 的开发服务会查找 quarkus-dev-service-infinispan 标签设置为配置值的容器。如果找到,它将使用此容器而不是启动新容器。否则,它将启动一个新容器,并将 quarkus-dev-service-infinispan 标签设置为指定值。

当您需要多个共享 Infinispan 服务器时,将使用此属性。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__DEVSERVICES_SERVICE_NAME

显示更多

字符串

infinispan

要使用的镜像。请注意,仅支持官方 Infinispan 镜像。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__DEVSERVICES_IMAGE_NAME

显示更多

字符串

要自动下载并添加到 Infinispan 服务器库的项目列表。

例如 Maven 坐标 (org.postgresql:postgresql:42.3.1) 或依赖项位置 URL。

如果传递了无效值,则 Infinispan 服务器在尝试启动时将抛出错误。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__DEVSERVICES_ARTIFACTS

显示更多

字符串列表

添加站点名称以启动启用了跨站点复制的 Infinispan 服务器容器(例如 lon)。跨站点复制是可以连接可能在不同数据中心运行的两个单独的 Infinispan 服务器集群,并配置备份缓存以使用主动-主动或主动-被动复制跨集群复制数据的功能。有关跨站点复制的更多信息,请参见 Infinispan 文档 https://infinispan.org/docs/stable/titles/xsite/xsite.html 配置 mcast-port 以避免与任何其他正在运行的 Infinispan 服务器容器形成集群。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__DEVSERVICES_SITE

显示更多

字符串

如果您已经在 Docker 中运行 Infinispan 服务器,如果容器使用相同的 mcastPort,它们将形成一个集群。设置不同的 mcastPort 以在 Docker 中创建一个单独的集群(例如 46656)。本地 Docker 开发模式中的一个常见用例是需要启用跨站点复制的两个不同的 Infinispan 集群。参见 https://github.com/infinispan/infinispan-simple-tutorials/blob/main/infinispan-remote/cross-site-replication/docker-compose/

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__DEVSERVICES_MCAST_PORT

显示更多

整数

传递给容器的环境变量。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__DEVSERVICES_CONTAINER_ENV__ENVIRONMENT_VARIABLE_NAME_

显示更多

Map<String,String>

要传递给容器的 Infinispan 服务器配置块。

环境变量:QUARKUS_INFINISPAN_CLIENT__CLIENT_NAME__DEVSERVICES_CONFIG_FILES

显示更多

字符串列表

开发服务

类型

默认

开发服务是否已被显式启用或禁用。通常默认启用开发服务,除非存在现有配置。

当启用开发服务时,Quarkus 将尝试在开发或测试模式下运行并且 Docker 正在运行时自动配置和启动数据库。

环境变量:QUARKUS_INFINISPAN_CLIENT_DEVSERVICES_ENABLED

显示更多

布尔值

true

当配置为空时,将自动创建一个 Infinispan 默认客户端以连接到正在运行的开发服务。但是,在某些情况下,创建此客户端是不必要的,但我们仍然需要启动 Infinispan 服务器。在这种情况下,此属性用于确定是否应默认由扩展创建客户端。

环境变量:QUARKUS_INFINISPAN_CLIENT_DEVSERVICES_CREATE_DEFAULT_CLIENT

显示更多

布尔值

true

开发服务将侦听的可选固定端口。

如果未定义,将随机选择端口。

环境变量:QUARKUS_INFINISPAN_CLIENT_DEVSERVICES_PORT

显示更多

整数

指示 Quarkus 开发服务管理的 Infinispan 服务器是否共享。共享时,Quarkus 使用基于标签的服务发现来查找正在运行的容器。如果找到匹配的容器,则使用它,因此不会启动第二个容器。否则,Infinispan 的开发服务将启动一个新容器。

发现使用 quarkus-dev-service-infinispan 标签。该值使用 service-name 属性进行配置。

容器共享仅在开发模式下使用。

环境变量:QUARKUS_INFINISPAN_CLIENT_DEVSERVICES_SHARED

显示更多

布尔值

true

附加到启动的容器的 quarkus-dev-service-infinispan 标签的值。当 shared 设置为 true 时,将使用此属性。在这种情况下,在启动容器之前,Infinispan 的开发服务会查找 quarkus-dev-service-infinispan 标签设置为配置值的容器。如果找到,它将使用此容器而不是启动新容器。否则,它将启动一个新容器,并将 quarkus-dev-service-infinispan 标签设置为指定值。

当您需要多个共享 Infinispan 服务器时,将使用此属性。

环境变量:QUARKUS_INFINISPAN_CLIENT_DEVSERVICES_SERVICE_NAME

显示更多

字符串

infinispan

要使用的镜像。请注意,仅支持官方 Infinispan 镜像。

环境变量:QUARKUS_INFINISPAN_CLIENT_DEVSERVICES_IMAGE_NAME

显示更多

字符串

要自动下载并添加到 Infinispan 服务器库的项目列表。

例如 Maven 坐标 (org.postgresql:postgresql:42.3.1) 或依赖项位置 URL。

如果传递了无效值,则 Infinispan 服务器在尝试启动时将抛出错误。

环境变量:QUARKUS_INFINISPAN_CLIENT_DEVSERVICES_ARTIFACTS

显示更多

字符串列表

添加站点名称以启动启用了跨站点复制的 Infinispan 服务器容器(例如 lon)。跨站点复制是可以连接可能在不同数据中心运行的两个单独的 Infinispan 服务器集群,并配置备份缓存以使用主动-主动或主动-被动复制跨集群复制数据的功能。有关跨站点复制的更多信息,请参见 Infinispan 文档 https://infinispan.org/docs/stable/titles/xsite/xsite.html 配置 mcast-port 以避免与任何其他正在运行的 Infinispan 服务器容器形成集群。

环境变量:QUARKUS_INFINISPAN_CLIENT_DEVSERVICES_SITE

显示更多

字符串

如果您已经在 Docker 中运行 Infinispan 服务器,如果容器使用相同的 mcastPort,它们将形成一个集群。设置不同的 mcastPort 以在 Docker 中创建一个单独的集群(例如 46656)。本地 Docker 开发模式中的一个常见用例是需要启用跨站点复制的两个不同的 Infinispan 集群。参见 https://github.com/infinispan/infinispan-simple-tutorials/blob/main/infinispan-remote/cross-site-replication/docker-compose/

环境变量:QUARKUS_INFINISPAN_CLIENT_DEVSERVICES_MCAST_PORT

显示更多

整数

传递给容器的环境变量。

环境变量:QUARKUS_INFINISPAN_CLIENT_DEVSERVICES_CONTAINER_ENV__ENVIRONMENT_VARIABLE_NAME_

显示更多

Map<String,String>

要传递给容器的 Infinispan 服务器配置块。

环境变量:QUARKUS_INFINISPAN_CLIENT_DEVSERVICES_CONFIG_FILES

显示更多

字符串列表

相关内容