S
S
Spring 实战(第五版)
搜索文档…
S
S
Spring 实战(第五版)
Spring 实战(第 5 版)
第一部分 Spring 基础
第 1 章 Spring 入门
第 2 章 开发 Web 应用程序
第 3 章 处理数据
第 4 章 Spring 安全
第 5 章 使用配置属性
第二部分 集成 Spring
第 6 章 创建 REST 服务
第 7 章 调用 REST 服务
第 8 章 发送异步消息
8.1 使用 JMS 发送消息
8.1.3 接收 JMS 消息
8.1.2 使用 JmsTemplate 发送消息
8.1.1 设置 JMS
8.2 使用 RabbitMQ 和 AMQP
8.3 使用 Kafka 发送消息
8.4 小结
第 9 章 集成 Spring
第三部分 响应式 Spring
第 10 章 Reactor 介绍
第 11 章 开发响应式 API
第 12 章 响应式持久化数据
第四部分 云原生 Spring
第 13 章 服务发现
第 14 章 配置管理
第 15 章 处理失败和时延
第五部分 部署Spring
第 16 章 使用 SpringBoot Actuator
第 17 章 管理 Spring
第 18 章 使用 JMX 监控 Spring
第 19 章 部署 Spring
由
GitBook
提供支持
8.1.1 设置 JMS
在使用 JMS 之前,必须将 JMS 客户端添加到项目的构建中。使用 Spring Boot,这个过程简单的不能再简单了,需要做的仅仅是将 starter 依赖添加到构建中。但是,首先必须决定是使用 Apache ActiveMQ,还是使用较新的 Apache ActiveMQ Artemis Broker。
如果使用 ActiveMQ,需要添加以下依赖到项目的 pom.xml 文件中:
<
dependency
>
<
groupId
>
org.springframework.boot
</
groupId
>
<
artifactId
>
spring-boot-starter-activemq
</
artifactId
>
</
dependency
>
如果选择 ActiveMQ Artemis,starter 如下所示:
<
dependency
>
<
groupId
>
org.springframework.boot
</
groupId
>
<
artifactId
>
spring-boot-starter-artemis
</
artifactId
>
</
dependency
>
Artemis 是 ActiveMQ 的下一代重新实现,实际上这让 ActiveMQ 成为一个遗留选项。因此,对于 Taco Cloud,将选择 Artemis。但是,这种选择最终对如何编写发送和接收消息的代码几乎没有影响。唯一显著的区别在于如何配置 Spring 来创建与 Broker 的连接。
默认情况下,Spring 假设 Artemis Broker 正在监听 localhost 的 61616 端口。对于开发目的,这是可以的,但是一旦准备好将应用程序发送到生产环境中,就需要设置一些属性来告诉 Spring 如何访问代理。表 8.1 列出了最有用的属性。
属性
描述
spring.artemis.host
broker 主机
spring.artemis.port
broker 端口
spring.artemis.user
用于访问 broker 的用户(可选)
spring.artemis.password
用于访问 broker 的密码(可选)
例如,考虑应用程序中的以下条目。可能用于非开发设置的 yml 文件:
spring
:
artemis
:
host
:
artemis.tacocloud.com
port
:
61617
user
:
tacoweb
password
:
13tm31n
这将设置 Spring,以创建到监听 artemis.tacocloud.com(端口 61617)的 Artemis Broker 的 broker 连接。它还设置将与该 broker 交互的应用程序的凭据,凭据是可选的,但建议用于生产部署。
如果要使用 ActiveMQ 而不是 Artemis,则需要使用表 8.2 中列出的 ActiveMQ 特定的属性。
属性
描述
spring.activemq.broker-url
Broker 的 URL
spring.activemq.user
用于访问 Broker 的用户(可选)
spring.activemq.password
用于访问 Broker 的密码(可选)
spring.activemq.in-memory
是否启动内存 Broker(默认:true)
请注意,不是为 Broker 的主机名和端口提供单独的属性,而是使用单个属性 spring.activemq.broker-url 指定 ActiveMQ Broker 的地址。URL 应该是
tcp://
URL,如下面的 YAML 片段所示:
spring
:
activemq
:
broker-url
:
tcp
:
//activemq.tacocloud.com
user
:
tacoweb
password
:
13tm31n
无论选择 Artemis 还是ActiveMQ,当 Broker 在本地运行时,都不需要为开发环境配置这些属性。
但是,如果使用 ActiveMQ,则需要设置 spring.activemq.in-memory 属性为 false,以防止 Spring 启动内存中的 Broker。内存中的 Broker可能看起来很有用,但它只在发布和消费同一个应用的消息时有用(这一点用处有限)。
在继续之前,将希望安装并启动一个 Artemis(或 ActiveMQ)Broker,而不是使用嵌入式 Broker。与其在这里重复安装说明,我建议你参考 Broker 文档了解详细信息:
Artemis
——
https://activemq.apache.org/artemis/docs/latest/using-server.html
ActiveMQ
——
http://activemq.apache.org/getting-started.html#GettingStarted-PreInstallationRequirements
有了构建中的 JMS starter 和等待将消息从一个应用程序传递到另一个应用程序的 Broker,就可以开始发送消息了。
以前
8.1.2 使用 JmsTemplate 发送消息
下一个
8.2 使用 RabbitMQ 和 AMQP
最近更新
2yr ago
复制链接