Apache ActiveMQ Queue Topic 详解
### Apache ActiveMQ Queue & Topic 详解 #### 一、特性及优势 Apache ActiveMQ 是一款高性能、功能丰富的消息中间件,具有以下显著特点: 1. **实现 JMS 1.1 规范**:支持 J2EE 1.4 及以上版本,这意味着它可以很好地集成到现有的 Java 应用环境中,提供消息传输服务。 2. **跨平台运行**:可在任何 JVM 上运行,同时支持多种 Web 容器,提高了应用的灵活性和兼容性。 3. **多语言客户端支持**:除了 Java 外,还支持 C、C++、AJAX 和 ActionScript 等多种编程语言,使得开发者可以根据项目需求选择最适合的语言进行开发。 4. **多协议支持**:支持 STOMP、OpenWire 和 REST 等多种通信协议,满足不同场景下的通信需求。 5. **良好的 Spring 集成**:与 Spring 框架有很好的集成,可以轻松地将 ActiveMQ 集成到基于 Spring 的应用中。 6. **高性能**:相较于 JBossMQ 等其他消息中间件,ActiveMQ 的性能更优,通常能达到 JBossMQ 性能的 10 倍以上。 7. **强大的社区支持**:作为 Apache 项目的一部分,ActiveMQ 有着活跃的社区支持和持续的发展更新,相比 OpenJMS、JBossMQ 等其他开源 JMS 提供商,其社区活跃度更高。 #### 二、下载与部署 1. **下载**:访问 [Apache ActiveMQ 官方网站](http://activemq.apache.org/activemq-510-release.html),下载最新版本(例如 5.1.0 Windows Distribution 版本)。 2. **安装**:解压缩下载的文件到指定目录(例如 D:\apache-activemq-5.1.0)。 3. **启动 ActiveMQ 服务器**: - 直接运行 `bin\activemq.bat`。 - 或者通过命令行方式,在 JVM 中启动 ActiveMQ:`cd example` 后运行 `ant embedBroker`。 4. **管理界面**:通过浏览器访问 `http://localhost:8161/admin` 进入 ActiveMQ 的管理后台系统,可以查看和管理 ActiveMQ 的状态。 #### 三、运行示例程序 1. **Queue 消息示例**(点对点): - **启动 Queue 消息消费者**:在命令行中运行 `cd example` 后执行 `ant consumer`。 - **启动 Queue 消息生产者**:同样地,在命令行中运行 `cd example` 后执行 `ant producer`。该示例会发送/接收 2000 条消息后自动关闭。 2. **Topic 消息示例**(群组订阅): - **启动 Topic 消息消费者**:运行 `cd example` 后执行 `ant topic-listener`。 - **启动 Topic 消息生产者**:运行 `cd example` 后执行 `ant topic-publisher`。此示例重复 10 轮,每轮发送 2000 条消息,并等待获取 listener 的处理结果报告,然后进入下一轮发送,最后统计全局发送时间。 #### 四、Queue 与 Topic 的比较 1. **Queue 执行 Load Balancer 语义**: - 每条消息仅能被一个消费者接收。若消息发送时没有可用的消费者,则消息会被保存直到有可用的消费者。如果一个消费者接收到消息但不响应,则消息会被转发给其他消费者。 - **点对点消息传递域的特点**: - 每条消息只能有一个消费者。 - 消费者与生产者之间没有时间上的相关性。无论消费者在生产者发送消息时是否处于活动状态,都能提取消息。 2. **Topic 实现 Publish 和 Subscribe 语义**: - 当消息被发布时,所有感兴趣的订阅者都会接收到消息的一份拷贝。但在消息代理接收到消息时,只有激活订阅的订阅者才能获取消息。 - **发布/订阅消息传递域的特点**: - 每条消息可以有多个消费者。 - 生产者与消费者之间存在时间上的相关性。订阅主题的消费者只能消费自订阅之后发布的消息。JMS 规范允许创建持久订阅,这样即使消费者未处于活动状态也能消费先前发送的消息。 3. **消息模式**: - **点对点 (P2P)**:适用于需要确保消息只被一个消费者接收的情况。 - **发布/订阅 (Pub/Sub)**:适用于消息需要广播给多个订阅者的情况。在 Pub/Sub 模式下,还可以进一步区分 Nondurable subscription(非持久订阅)和 Durable subscription(持久订阅),后者可以在消费者未处于活动状态时保留消息。 Apache ActiveMQ 不仅为开发者提供了强大的消息处理能力,还具备灵活的部署选项和广泛的语言支持,是构建高性能分布式应用的理想选择之一。
- 粉丝: 4
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助