将Azure 服务总线与 JMS 配合使用

本文适用于: ✔️版本 4.14.0 ✔️ 版本 5.8.0

本文介绍如何将Azure 服务总线与集成到 Spring JMS 框架中的 JMS API 配合使用。

必须提供一个Azure 服务总线 连接字符串,该Azure 服务总线 连接字符串解析为 AMQP 代理的登录用户名、密码和远程 URI。

依赖项设置

如果要迁移 Spring JMS 应用程序以使用Azure 服务总线,请添加以下依赖项。

<dependency>
    <groupId>com.azure.spring</groupId>
    <artifactId>spring-cloud-azure-starter-servicebus-jms</artifactId>
</dependency>

配置

下表描述了使用 Spring JMS 支持时的可配置属性:

properties 说明
spring.jms.servicebus.connection-string Azure 服务总线 连接字符串,用于直接提供连接字符串。
spring.jms.servicebus.topic-client-id JMS 客户端 ID。 topicJmsListenerContainerFactory仅适用于豆子。
spring.jms.servicebus.enabled 一个值,该值指示是否启用 Servive Bus JMS 自动配置。 默认值为 true
spring.jms.servicebus.idle-timeout 连接空闲超时持续时间,指示客户端在未传递消息时服务总线保持连接保持活动状态的时间。 默认值为 2m
spring.jms.servicebus.pricing-tier Azure 服务总线价格层。 支持的值是 高级 值和 标准值。 高级版层使用 Java 消息服务 (JMS) 2.0,而标准层则使用 JMS 1.1 与Azure 服务总线交互。
spring.jms.servicebus.listener.reply-pub-sub-domain 一个值,该值指示回复目标类型是否为主题。 topicJmsListenerContainerFactory仅适用于豆子。
spring.jms.servicebus.listener.phase 应启动和停止此容器的阶段。
spring.jms.servicebus.listener.reply-qos-settings 配置发送 QosSettings 答复时要使用的配置。
spring.jms.servicebus.listener.subscription-durable 一个值,该值指示是否使订阅持久化。 topicJmsListenerContainerFactory仅适用于豆子。 默认值为 true
spring.jms.servicebus.listener.subscription-shared 一个值,该值指示是否共享订阅。 topicJmsListenerContainerFactory仅适用于豆子。
spring.jms.servicebus.pool.block-if-full 一个值,该值指示是否在请求连接且池已满时阻止。 将其设置为 false 以改为引发。JMSException
spring.jms.servicebus.pool.block-if-full-timeout 如果池仍然已满,则引发异常之前的阻塞期。
spring.jms.servicebus.pool.enabled 一个值,该值指示是否应创建 a JmsPoolConnectionFactory 而不是常规 ConnectionFactory值。
spring.jms.servicebus.pool.idle-timeout 连接池空闲超时。
spring.jms.servicebus.pool.max-connections 共用连接的最大数目。
spring.jms.servicebus.pool.max-sessions-per-connection 池中每个连接的共用会话数上限。
spring.jms.servicebus.pool.time-between-expiration-检查 空闲连接逐出线程的运行之间的睡眠时间。 当为负时,不会运行空闲连接逐出线程。
spring.jms.servicebus.pool.use-anonymous-producers 一个值,该值指示是否只使用一个匿名 MessageProducer 实例。 将其设置为 false 每次需要一个时创建一 MessageProducer 个。
spring.jms.servicebus.prefetch-policy.all 此服务总线命名空间中预提取选项的回退值。 默认值为 0
spring.jms.servicebus.prefetch-policy.durable-topic-prefetch 持久主题的预提取数。 默认值为 0
spring.jms.servicebus.prefetch-policy.queue-browser-prefetch 队列浏览器的预提取数。 默认值为 0
spring.jms.servicebus.prefetch-policy.queue-prefetch 队列的预提取数。 默认值为 0
spring.jms.servicebus.prefetch-policy.topic-prefetch 主题的预提取数。 默认值为 0

注意

短时间内省略 Spring JMS 常规配置。

有关详细信息,请参阅 Spring JMS 文档

基本用法

使用服务总线连接字符串

连接到 Spring JMS 应用程序的服务总线最简单的方法是使用 连接字符串。

添加以下属性,可以继续操作。

spring:
  jms:
    servicebus:
      connection-string: ${AZURE_SERVICEBUS_CONNECTION_STRING}
      pricing-tier: ${PRICING_TIER}

注意

默认启用 ConnectionFactory 的是 CachingConnectionFactory添加 Session 缓存和 MessageProducer 缓存的缓存。 如果要激活连接池功能 JmsPoolConnectionFactory,请设置为 spring.jms.servicebus.pool.enabledtrue。 可以在“配置”部分找到其他池配置选项(带有前缀spring.jms.servicebus.pool.的属性)。

示例

有关详细信息,请参阅 GitHub 上的 azure-spring-boot-samples 存储库。