ActiveMQ入门到精通-ActiveMQ简介

一、ActiveMQ简介

1 消息中间件

传统消息通知技术的局限性:

(1)同步通信,客户发出调用后,必须等待服务对象完成处理并返回结果后才能继续执行。

(2)客户和服务对象的生命周期紧密耦合,客户进程和服务对象进程都必须正常运行,如果由于服务对象崩溃或者网络故障导致客户的请求不可达,客户会接收到异常。

(3)点对点通信,客户的一次调用只发送给某个单独的目标对象。

面向消息中间件(Message Oriented Middleware,MOM)较好的解决了以上问题。发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列(Message Queen ,MQ)中,在合适的时候再将消息发送给接受者。

(1)这种模式下,发送和接收是异步的,发送者无需等待。

(2)二者的生命周期未必相同,发送消息的时候接受者不一定运行,接收消息的时候发送者也不一定运行。

(3)一对多通信,对于一个消息可以有多个接受者。

消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信

消息中间件适用于需要可靠的数据传送的分布式环境。采用消息中间件机制的系统中,不同的对象之间通过传递消息来激活对方的事件,完成相应的操作。发送者将消息发送给消息服务器,消息服务器将消息存放在若干队列中,在合适的时候再将消息转发给接收者。消息中间件能在不同平台之间通信,它常被用来屏蔽掉各种平台及协议之间的特性,实现应用程序之间的协同,其优点在于能够在客户和服务器之间提供同步和异步的连接,并且在任何时刻都可以将消息进行传送或者存储转发,这也是它比远程过程调用更进一步的原因。(引自百度百科)

2 消息中间件的传递模式

  1. 点对点模型(PTP)点对点模型用于消息生产者和消息消费者之间点到点的通信。消息生产者将消息发动到由某个名字标识的特定消费者。这个名字实际上对应于消息服务中的一个队列(Queue),在消息传动给消费者之前它被存储在这个队列中。队列可以是持久的,以保证在消息服务出现故障时仍然能够传递消息。

  2. 发布-订阅模型(Pub/Sub)发布-订阅模型用称为主题(topic)的内容分层结构代替了PTP模型中的惟一目的地,发送应用程序发布自己的消息,指出消息描述的是有关分层结构中的一个主题的信息。希望接收这些消息的应用程序订阅了这个主题。订阅包含子主题的分层结构中的主题的订阅者可以接收该主题和其子主题发表的所有

3 Java消息服务(JMS)

JMS定义了java中访问消息中间节的接口。

3.1 JMS简介

JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。

JMS是一种与厂商无关的 API,用来访问消息收发系统消息,它类似于JDBC(Java Database Connectivity)。这里,JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问消息收发服务。许多厂商都支持 JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ。 JMS 使您能够通过消息收发服务(有时称为消息中介程序或路由器)从一个 JMS 客户机向另一个 JMS客户机发送消息。消息是 JMS 中的一种类型对象,由两部分组成:报头和消息主体。报头由路由信息以及有关该消息的元数据组成。消息主体则携带着应用程序的数据或有效负载。根据有效负载的类型来划分,可以将消息分为几种类型,它们分别携带:简单文本(TextMessage)、可序列化的对象 (ObjectMessage)、属性集合 (MapMessage)、字节流 (BytesMessage)、原始值流 (StreamMessage),还有无有效负载的消息 (Message)。

注:以上对JMS的解释,引自百度百科。

3.2JMS术语:

Provider(MessageProvider):消息生产者

Consumer(MessageConsumer):消息消费者

PTP:Poino to Point ,点对点的消息模型

Pub/Sub:Publish/Subscribe,发布/订阅的消息模型

Queue:队列

Topic:主题

ConnectionFactory:链接工厂,JMS用它创建链接

Connection:JMS客户端到Provider的链接

Destination:消息的目的地

Session:会话,一个发送或者接受消息的线程

3.3 JMS消息格式定义

JMS定义了五种不同的消息正文格式,以及调用的消息类型,允许你发送并接收一些不同形式的数据,提供现有消息格式的一些级别的兼容性。

  • StreamMessage Java原始数据的数据流

  • MapMessage 键-值对

  • TextMessage 字符串对象

  • ObjectMessage 序列化Java对象

  • BytesMessage 字节数据流

常见的消息中间件产品:ActiveMQ、RocketMQ、RabbitMQ、IBM MQ、Kafka等等都遵循JMS规范。

3 ActiveMQ简介

ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位,可以说ActiveMQ在业界应用最为广泛。ActiveMQ是其他一系列MQ技术的基础。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值