MQ系列(四):ActiveMQ发送与消费优化,异步,同步,流控,预取限制,慢消费
ActiveMQ 为生产者发送消息提供了根据业务场景需要的相关优化配置,支持同步,异步发送,支持流量控制,Broker存储空间设置等。
也为消息者提供了优化设置,支预取限制,为慢消费者提供了等待消息策略和消息丢弃策略的配置,支持异步消费者和优先级消费设置。
ActiveMQ 为生产者发送消息提供了根据业务场景需要的相关优化配置,支持同步,异步发送,支持流量控制,Broker存储空间设置等。
也为消息者提供了优化设置,支预取限制,为慢消费者提供了等待消息策略和消息丢弃策略的配置,支持异步消费者和优先级消费设置。
ActiveMQ 支持 JMS 规范中的 2 种消息转发模式,支持消息事务,支持异步发送消息和生产者流量控制,提供了 4 种消息消费应答模式,提供消息发送失败后重试机制,
本文分别对 ActiveMQ 消息转发模式,事务,消息过期,消息积压,应答模式,重试,死信队列等相关配置进行描述。
ActiveMQ 同样支持集群部署,支持客户端集群和服务端集群,实现可靠的高性能负载均衡。
ActiveMQ 提供了独占消费者配置,可保证消息消费的顺序性,消息组是对独占消费者功能的增强。
ActiveMQ 是一款老牌的,开源的,多协议的,非常流行的,基于 JAVA 的消息中间件,由 Apache 出品。ActiveMQ 官网,ActiveMQ Documentation。
ActiveMQ 实现了 JSM 1.1 标准,并提供了很多附加特性,如 JMS 管理,主从管理,消息组通信,消息优先级,延迟接收消息,虚拟接收者,消息持久化,消息队列监控等特性。
目前有两种类型的 ActiveMQ 可用,分别是经典的 5.x
版本 和 下一代 Artemis
版本,后续 5.x 与 Artemis 版本兼容合并将成为 ActiveMQ 6。
本篇基于本地事件表加 ActiveMQ 实现分布式事务。
本篇是 分布式微服务应用系列(九):分布式事务概念及解决方案 ,分布式微服务应用系列(十):本地事件表加消息队列实现分布式事务思路 的延续。
Spring Boot 为 AcitveMQ 提供了自动配置,可以直接使用jmsTemplate
,自动开启了消息监听注解@EnableJms
。
更多关于消息服务概念和支持的组件可阅读Spring Boot 2实践系列(三十三):JMS 和 AMQP 消息服务及支持的消息组件。
消息组件在现在的互联网应用系统已广泛使用,特别是在大型的、分布式或微服务架构中,要协调系统之间的通信,消息组件几乎是不可或缺的。
使用消息中间件可实现系统之间的异步通信、可对服务之间的调用进行解耦、可对并发请求实现流量消峰、可用于消息通讯。
Spring Framework 为与消息组件的集成提供了广泛的支持, 从简化使用JMS API
的JmsTemplate
到完整的异步接收消息的基础架构。 Spring AMQP还为高级消息队列协议提供了类似的功能集。
Spring Boot 默认就为 ActiveMQ、 RabbitMQ、 Kafka、 Artemis 提供自动配置支持。Spring AMQP 官方文档,Spring Boot Message 文档。