一分钟教你快速了解ActiveMQ?

本文介绍了ActiveMQ作为Java消息服务(JMS)的一种实现,详细解释了其在高并发场景中的应用价值,如大型电商平台及12306等系统的案例,并探讨了使用ActiveMQ的好处及其两种消息传输方式。

快速了解本文:

目录

JMS是什么?

ActiveMQ是什么?

ActiveMQ主要应用场景有哪些?

在企业开发中不使用ActiveMQ会怎么样?

ActiveMQ采用什么模型?

ActiveMQ支持哪两种消息传输方式?

使用消息队列的好处


  • JMS是什么?

Java Message Service,一套处理消息的规范

Message:消息,通俗来讲,是指要做的事情

  • ActiveMQ是什么?

  1. 是一种JMS Provider,其他开源JMS供应商还有RabbitMQ、RocketMQ

  2. ActiveMQ是一种消息队列技术

Active是活跃的意思,MQ是Message Queue,即消息队列,说通俗点,这个技术能同时处理很多个消息,能同时干很多 事

  • ActiveMQ主要应用场景有哪些?

  1. 大型电商网站,如淘宝、京东,同时有几亿用户在下单

  2. 12306,同时几亿人在购买火车票

  3. 其他在同一时间会有很多请求的场景

这些场景有一个共同的特点:高并发

并发是同时发生的意思,高并发就是高度密集的同时发生,通俗点,就是同时有大量的请求发往服务器,ActiveMQ就是为解决高并发问题而生!

  • 在企业开发中不使用ActiveMQ会怎么样?

  1. 即便不使用ActiveMQ,也会使用类似的技术,比如RabbitMQ、RocketMQ
  2. 主流程卡顿,甚至服务器宕机,用户体验很差,甚至用不了
  3. 系统耦合性太强,不利于系统迁移和维护
  • ActiveMQ采用什么模型?

生产者消费者模型(生产者和消费者可以跨平台、跨系统)

  • ActiveMQ支持哪两种消息传输方式?

1、Queue,队列模式,生产者生产了一个消息,只能由一个消费者进行消费

2、Topic,发布/订阅模式,生产者生产了一个消息,可以由多个消费者进行消费

 

  • 使用消息队列的好处

消息队列在大型电子商务类网站,如京东、淘宝、去哪儿等网站有这深入的应用,队列的主要作用是消除高并发访问高峰,加快网站的响应速度。

在不使用消息队列的情况下,用户的请求数据直接写入数据库,在高并发的情况下,会对数据库造成巨大的压力,同时也使得系统响应延迟加剧。

在使用队列后,用户的请求发给队列后立即返回(当然不能直接给用户提示订单提交成功,京东上提示:您“您提交了订单,请等待系统确认”),再由消息队列的消费者进程从消息队列中获取数据,异步写入数据库。由于消息队列的服务处理速度远快于数据库,因此用户的响应延迟可得到有效改善。

1、系统整合:同构/异构系统整合,分布式环境中

2、降低模块间耦合:比如AB两个系统,A性能瓶颈或宕机、

系统差不干扰B

3、实现异步:1.推消息 2.削峰请求

4、数据同步:web应用->缓存,搜索,db

 

 

 

Spring Integration 是一个用于构建企业集成解决方案的框架,它提供了对各种消息中间件的支持,包括 ActiveMQ。配置 Spring Integration 使用 ActiveMQ 可以通过以下步骤实现: 1. **引入依赖**:首先,你需要在项目的 `pom.xml` 文件中添加 Spring Integration 和 ActiveMQ 的依赖。 2. **配置 ActiveMQ 连接工厂**:创建一个 ActiveMQ 连接工厂,用于连接到 ActiveMQ 服务器。 3. **定义通道(Channel)**:在 Spring Integration 中,通道是用于连接各个组件的管道。你可以定义一个通道,用于消息传输。 4. **配置消息端点**:配置消息端点(如 `JmsOutboundGateway` 或 `JmsInboundGateway`),这些端点将与 ActiveMQ 进行交互。 5. **启动 Spring 应用上下文**:确保 Spring 应用上下文正确启动,以便 Spring Integration 能够正常工作。 以下是一个示例代码片段,展示了如何配置 Spring Integration 使用 ActiveMQ: ```java import org.apache.activemq.ActiveMQConnectionFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.integration.annotation.IntegrationComponentScan; import org.springframework.integration.config.EnableIntegration; import org.springframework.jms.core.JmsTemplate; import javax.jms.ConnectionFactory; @Configuration @EnableIntegration @IntegrationComponentScan(basePackages = "com.example") public class ActiveMQConfig { @Bean public ConnectionFactory connectionFactory() { return new ActiveMQConnectionFactory("tcp://localhost:61616"); } @Bean public JmsTemplate jmsTemplate() { return new JmsTemplate(connectionFactory()); } // 可以在这里添加更多的配置,例如消息端点、通道等 } ``` 在这个示例中,我们创建了一个 ActiveMQ 连接工厂,并使用它来配置 JmsTemplate。然后,我们可以在 Spring Integration 中使用这个 JmsTemplate 来进行消息的发送和接收。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值