将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.enabled
true
。 可以在“配置”部分找到其他池配置选项(带有前缀spring.jms.servicebus.pool.
的属性)。
示例
有关详细信息,请参阅 GitHub 上的 azure-spring-boot-samples 存储库。