事件驱动开发是一种异步的、用来开发高扩展应用、分布式的架构。它涉及到事件的产生、处理和消费。了解事件驱动首先要了解下面四个概念:
- Message/Event:消息或事件,需要产生、处理和消费的数据;
- Publisher/Producer:消息的发布者或生产者;
- Subsriber/Consumer:消息的订阅者或消费者;
- Message Broker:消息代理或消息中间件,是发布者和订阅者另外的第三方;通过消息代理了来转发消息,发布者和订阅者无需知道彼此的存在。
1.JMS
Spring支持ActiveMQ和Artemis作为JMS消息中间件,Artemis是ActiveMQ下一代的重新实现,本节以Artemis作为示例。
1.1 安装Apache ActiveMQ Artemis
使用docker compose安装Artemis。
stack.yml
version: '3.1'
services:
artemis:
image: vromero/activemq-artemis
restart: always
ports:
- 8161:8161 # 管理控制台端口
- 61616:61616 # 连接端口
environment:
ARTEMIS_USERNAME: wisely
ARTEMIS_PASSWORD: zzzzzz
执行命令:
$ docker-compose -f stack.yml up -d
1.2 新建应用
新建应用,信息如下:
Group:top.wisely
Artifact:learning-jms
Dependencies:Spring for Apache ActiveMQ Artemis
、Lombok
build.gradle
文件中的依赖如下:
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-artemis'
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
//...
}
1.3 Spring Boot的自动配置
Spring Boot对JMS提供的自动配置有:
-
ArtemisAutoConfiguration
:通过ArtemisProperties
使用spring.artemis.*
来配置连接Artemis的jmsConnectionFactory
的Bean; -
JmsAutoConfiguration
:- 使用
jmsConnectionFactory
的Bean配置jmsTemplate
的Bean; - 通过
@EnableJms
开启JMS的支持。
- 使用
1.4 示例
-
连接JMS中间件Artemis
spring: artemis: