编辑此页面

AMQP 的 Dev Services

AMQP 开发服务在开发模式和运行测试时自动启动 AMQP 1.0 消息代理。因此,您无需手动启动消息代理。应用程序会自动配置。

启用/禁用 AMQP 开发服务

除非满足以下条件,否则 AMQP 开发服务会自动启用:

  • quarkus.amqp.devservices.enabled 设置为 false

  • 已配置 amqp-hostamqp-port

  • 所有 Reactive Messaging AMQP 通道都设置了 hostport 属性

AMQP 开发服务依赖 Docker 启动消息代理。如果您的环境不支持 Docker,您需要手动启动消息代理,或连接到已运行的消息代理。您可以使用 amqp-hostamqp-portamqp-useramqp-password 属性配置消息代理访问。

共享消息代理

大多数情况下,您需要在应用程序之间共享消息代理。AMQP 开发服务为在开发模式下运行的多个 Quarkus 应用程序实现了一种服务发现机制,以共享单个消息代理。

AMQP 开发服务使用 quarkus-dev-service-amqp 标签启动容器,该标签用于标识容器。

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

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

设置端口

默认情况下,AMQP 开发服务选择一个随机端口并配置应用程序。您可以通过配置 quarkus.amqp.devservices.port 属性来设置端口。

配置镜像

AMQP 开发服务使用 activemq-artemis-broker 镜像。您可以使用 quarkus.amqp.devservices.image-name 属性配置镜像和版本。

quarkus.amqp.devservices.image-name=quay.io/artemiscloud/activemq-artemis-broker:latest
配置的镜像必须与 activemq-artemis-broker 镜像兼容。容器使用 AMQ_USERAMQ_PASSWORDAMQ_EXTRA_ARGS 环境变量启动。暴露端口 5672 和 8161(Web 控制台)。

配置参考

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

配置属性

类型

默认

是否已显式启用或禁用 AMQP 开发服务。默认情况下通常会启用开发服务,除非存在现有配置。对于 AMQP,开发服务会启动一个消息代理,除非设置了 amqp-hostamqp-port,或者所有 Reactive Messaging AMQP 通道都配置了 hostport

环境变量:QUARKUS_AMQP_DEVSERVICES_ENABLED

显示更多

布尔值

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

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

环境变量:QUARKUS_AMQP_DEVSERVICES_PORT

显示更多

整数

要使用的镜像。请注意,仅支持 ActiveMQ Artemis 镜像。具体来说,镜像存储库必须以 artemiscloud/activemq-artemis-broker 结尾。

请查看 Quay 页面上的 activemq-artemis-broker 以查找可用版本。

环境变量:QUARKUS_AMQP_DEVSERVICES_IMAGE_NAME

显示更多

字符串

quay.io/artemiscloud/activemq-artemis-broker:1.0.25

要传递给容器的 AMQ_EXTRA_ARGS 环境变量的值。对于 ActiveMQ Artemis Broker ⇐ 1.0.21,请将此属性设置为 --no-autotune --mapped --no-fsync --relax-jolokia --http-host 0.0.0.0

环境变量:QUARKUS_AMQP_DEVSERVICES_EXTRA_ARGS

显示更多

字符串

--no-autotune --mapped --no-fsync --relax-jolokia

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

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

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

环境变量:QUARKUS_AMQP_DEVSERVICES_SHARED

显示更多

布尔值

true

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

当您需要多个共享 AMQP 代理时,会使用此属性。

环境变量:QUARKUS_AMQP_DEVSERVICES_SERVICE_NAME

显示更多

字符串

amqp

传递给容器的环境变量。

环境变量:QUARKUS_AMQP_DEVSERVICES_CONTAINER_ENV__ENVIRONMENT_VARIABLE_NAME_

显示更多

Map<String,String>

相关内容