初探Apache ActiveMQ
Posted SV杂谈窝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了初探Apache ActiveMQ相关的知识,希望对你有一定的参考价值。
一、前言
先来说一说消息队列,顾名思义,消息队列是按一定顺序存放消息的容器。为什么会有这种东西呢,我们来看这样一个场景:在微信出现之前,也就是短信还非常普及的时代,我们通过短信与他人进行沟通。平时没有什么,发送了的消息几乎马上会被对方。但是如果很多人给你发短信,举个非常极端的例子,大年三十晚上发短信祝福的时候,往往会很久很久才会收到信息。没有收到之前信息在哪里呢,自然是有一个消息队列装载这些消息。
另一方面,使用消息队列还有一个好处就是,可以将两个系统进行解耦,尤其对于高并发并且多个系统处理效率不一致的情况,使用消息队列可以增大系统的吞吐量和效率。
作为一个JAVA开发人员,比较熟悉的消息队列中间件就是Apache的ActiveMQ,下面对其进行介绍。
二、术语名词
名词 | 英文全称 | 缩写 | 解释 |
---|---|---|---|
生产者 | MessageProvider | Provider | 产生或发送消息的系统 |
消费者 | MessageConsumer | Consumer | 处理或接收消息的系统 |
点对点 | Point to Point | P2P | 点对点消息模型 |
发布/订阅 | Publish/Subscribe | Pub/Sub | 发布/订阅消息模型 |
连接工厂 | ConnectionFactory | —— | 创建消息连接的工厂类 |
连接 | Connection | —— | 用于接发消息的连接 |
会话 | Session | —— | 由Connection创建,一个接发消息的会话 |
消息目的地 | Destination | —— | 由Session创建,消息发送的目的地 |
队列 | Queue | —— | 用于点对点消息模型 |
主题 | Topic | —— | 用于发布/订阅模型 |
三、消息模型
所谓消息模型,就是消息发送和接收的模式。在ActiveMQ中,分为两种消息模式,点对点消息模型和发布/订阅消息模型。
点对点模型
点对点消息模型就是一个生产者产生的消息,最终会由一个消费者去消费。在ActiveMQ中,对于同一个Destination,发送的消息放在同一个Queue中,消费者在消息发布之前不需要进行监听,当消费者从消息队列获取消息时,会根据现有的Queue按照获取的优先级获取消息。而且可以配置何时确认Queue消息被消耗。
发布/订阅模型
发布/订阅模型则不是,一个生产者发出的消息可能被多个消费者消费。在ActiveMQ中,对于同一个Destination,会产生一个Topic,当生产者产线消息后,直接进行发布。消费者需要提前进行监听,消息发布后,会自动接收消息。如果消息发布的时候没有任何一个消费者监听,那这个消息将不会被任何消费者消费。
四、消息协议
息协议,是指发送消息的校验格式或者说是传输数据结构,ActiveMQ在官方的例子中,一共包含如下四种消息协议:
1. AMQP协议
Advanced Message Queuing Protocol,被设计为当前流行消息中间件的开放替代品,它的可靠性和互用性是使用它的两个原因。它提供了与消息传递相关的各种功能,包括可靠的排队,基于主题的发布和订阅消息传递,灵活的路由,事务和安全性等。
2. MQTT协议
Message Queue Telemetry Transport,最初是IBM的普遍计算技术团队和其工业部门的合伙人开发的,之后移入开源社区,并被移动应用中流行起来。
3. Openwire协议
这个协议是Apache自己的跨语言线路协议,来让不同的开发语言和平台使用ActiveMQ。
4. stomp协议
Simple/Streaming Text Oriented Messaging Protocol,是基于文本的消息协议,更加类似于HTTP。
五、Hello World
见原文
以上是关于初探Apache ActiveMQ的主要内容,如果未能解决你的问题,请参考以下文章