《ActiveMQ系列》1.ActiveMQ概述和基本知识

ActiveMQ概述

本章都是一些概念知识,不感兴趣可以直接不看。

1. ActiveMQ是什么?

ActiveMQ是一个开源的JMS(Java Message Service)消息代理软件,是Apache软件基金会的顶级项目之一。它主要用于在分布式系统中传递消息,提供了完整的JMS规范实现。使用ActiveMQ可以使得应用程序更加灵活、可扩展、面向服务、可重用和响应性更好。

2. ActiveMQ用途

ActiveMQ主要用于在分布式系统中传递消息,并且提供了完整的JMS规范实现。使用ActiveMQ可以使得应用程序更加灵活、可扩展、面向服务、可重用和响应性更好。具体来说,ActiveMQ可以被用作以下场景:

  • 企业应用集成(EAI)
  • 科学计算
  • 在线游戏
  • 股票和金融
  • 电话中心
  • 电子商务等

3. ActiveMQ优缺点

优点
  • 支持多种协议,包括AMQP、STOMP、MQTT、OpenWire等。
  • 支持消息异步和同步发送。
  • 支持消息持久化和事务处理。
  • 高吞吐量,能够处理大量的消息。
  • 可以进行动态路由,需要时自动创建队列或主题。
  • 提供了Web控制台来监视和管理ActiveMQ容器。
缺点
  • 在处理超大量级的消息时,性能和吞吐量可能会出现问题。
  • 在特定条件下,可能会有消息丢失的风险。

4. ActiveMQ消息队列概念

ActiveMQ消息队列是一种存储消息的方式,实现了点对点的消息传递模型。具体来说,消息生产者将消息发送到消息队列中,而消息消费者则从消息队列中获取消息。消息的传递是通过消息队列中一个个固定的先后顺序完成的。也就是说,消息生产者和消息消费者之间没有直接的交互,而是通过消息队列中维护的中间存储区域来进行交互的。这样可以实现异步通信,提高系统的稳定性和可靠性。

每个消息队列都有一个唯一的名称,用于标识其所属的队列。消息队列具有以下特点:

  • 消息是按照先进先出(FIFO)的顺序进行处理的,即先发送的消息先被处理。
  • 消息生产者和消息消费者之间是一对一的关系,即一个消息只能被一个消息消费者处理。
  • 消息队列支持消息的持久化,即当消息被发送到队列之后,即使中间件服务出现问题导致重启,消息也不会丢失,并可以在重启之后的消息消费过程中正常使用

5. ActiveMQ主题概念

ActiveMQ主题是一种实现发布/订阅模型的方式,消息生产者将消息发布到主题上,而消息消费者则通过订阅主题来接收消息。与点对点模型不同,主题消息可以被多个消费者同时接收,且消息消费者只能消费在其订阅范围内的消息。

每个主题也都有一个唯一的名称,用于标识其所属的主题。主题支持一对多的消息传递,即一个消息可以被多个订阅了该主题的消费者接收到。主题具有以下特点:

  • 消息是广播给所有订阅了该主题的消费者,而不是只发送给其中的一个消费者。
  • 消息消费者需要先订阅主题,才能接收到主题上发布的消息。
  • 消息主题不保留消息的状态,一旦消息发布之后,就没有记录保存该消息的状态。这一点与消息队列不同,消息队列可以保留已经发送的消息状态。

6. ActiveMQ的架构和组件

ActiveMQ架构基于Broker模型,Broker是一个中间件服务,它负责接收来自消息生产者的消息并将其存储在消息队列或主题中,同时也负责将消息发送给消息消费者。ActiveMQ中包含以下组件:

  • Broker:消息代理服务,主要负责消息的路由和转发。
  • Transport Connector:支持多种通信协议的连接器,如TCP、AMQP、STOMP等。
  • Message:消息实体,包含消息头、消息体和消息属性等信息。
  • Message Producer:消息生产者,用于向消息队列或主题发送消息。
  • Message Consumer:消息消费者,用于从消息队列或主题中获取消息。
  • Destination:目的地,指消息发送的地点,可以是队列或主题。
  • JMS Provider:JMS提供者,提供了Java应用程序与ActiveMQ之间的通信接口和实现。

7.ActiveMQ的持久化

ActiveMQ的持久化是指在消息发送到ActiveMQ之后,将消息存储到磁盘或者数据库中,保证即使ActiveMQ宕机或重启,消息仍然能够被恢复和重新发送的机制。下面简单介绍一下ActiveMQ的持久化方式:

  1. KahaDB持久化:这是ActiveMQ中默认的持久化方式,使用KahaDB作为存储引擎,可以将消息以文件的方式存储到本地磁盘中。这种方式可以实现高效的消息存储和检索,但是也会占用大量的磁盘空间。
  2. JDBC持久化:这种方式使用数据库来存储消息,支持多种数据库,例如MySQL、Oracle、PostgreSQL等。可以通过配置数据源、数据表等参数来进行设置。相对于KahaDB,JDBC持久化可以更好地支持数据的备份和集群部署,但是也需要注意数据库的性能和容量问题。
  3. Memory持久化:这种方式不会将消息持久化到磁盘或数据库中,而是将消息保存在内存中。这样可以提高消息处理的效率,但是也存在消息因应用程序故障而丢失的风险,适用于对数据可靠性要求不高的场景。
  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值