jms 自动接收确认_SpringBoot消息源码解析:JMS基础自动配置

SpringBoot消息源码解析

Spring框架对消息系统的整合提供了广泛的支持:从简单使用 Jms Template 的 JMS API,到可接收异步消息的完整基础结构。Spring AMQP 为“高级消息队列协议”提供了类似的功能集。

同时,Spring Boot 也为 RabbitTemplate 和 Rabbit MQ 提供了自动配置选项。Spring Boot通过自动配置对 ActiveMQ、RabbitMQ 和 Apache Kafka 提供了支持。本章重点讲解 SpringBoot 对 JMS 和 ActiveMQ 的自动配置操作。

JMS 基础自动配置

JMS 的全称是 Java Message Service,即 Java 消息服务。它主要用于在生产者和消费者之间进行消息传递。JMS 只是一个标准, 在使用的时候需要有具体实现,比如后面要讲到的ActiveMQ。

在 Spring Boot 中,通过 JmsAutoConfiguration 自动配置来完成 JMS 的基础组件的初始化。

像其他自动配置-样,在 ME TA-INF/spring.factories 中可以找到注册的 JMS 自动配置类。

# Auto Configureorg. springframework . boot . autoconfigure . jms . JmsAutoConfiguration
55cea971aa0dd169b34f8af843ff22c9.png

JmsAutoConfiguration 的注解

我们先从 JmsAutoConfiguration 的注解部分看起。

@Configuration(proxyBeanMethods = false)@Conditional0nClass({ Message . class, JmsTemplate.class })@ConditionalOnBean(ConnectionFactory . class)@EnableConfigurationProperties (JmsProperties .class)@Import (JmsAnnotat ionDrivenConfiguration. class)public class JmsAutoConfiguration {}

@ConditionalOnClass 注解指定需要满足在 classpath 下存在javax.jms.Message 类和 org.springframework.jms.core.Jms Template 类的条件才会进行初始化。

@ConditionalOnBean 注解指定需要在容器中存在javax.jms.ConnectionFactory 的 Bean 对象时才会被实例化。

ConnectionFactory 接口提供了用于创建与 JMS 代理进行交互的 javax.jms.Connection 的标准方法。Spring 需要 ConnectionFactory 来 与 JMS 一起使用,但是通常不需要编程人员直接使用它。

那么,ConnectionFactory 的 Bean 是在什么时候被初始化的呢?以 ActiveMQ 为例,Active-MQ 的自动配置会在 JmsAutoConfiguration 配置之前执行,并在其内部创建Connection-Factory 实现类的 Bean 对象。 其他消息框架也与此类似,至于是如何初始化的,后面关于 ActiveMQ 的自动配置的部分我们会进行详解。

@EnableConfigurationProperties引入了JMS的配置属性类 ,对应的就 是 在application.properties 文件中配置的以“spring.jms”为前缀的属性。

@Import 引入了 JmsAnnotationDrivenConfiguration 配置,该配置类主要用于 Spring4.1 注解驱动的 JMS 的自动配置。

下面我们先看 JmsAnnotationDrivenConfiguration 的注解部分和构造方法的源代码。

@Configuration(p
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值