转自:http://hi.baidu.com/lubezhang/blog/item/bd308b3b7ecce3ec14cecb4f.htmlhtml
IBM MQ(IBM Message Queue)是IBM的一款商业消息中间产品,适用于分布式计算环境或异构系统之中。消息队列技术是分布式应用间交换信息的一种技术。消息队列可驻留在内存或磁盘上,队列存储消息直到它们被应用程序读走。经过消息队列,应用程序可独立地执行--它们不须要知道彼此的位置、或在继续执行前不须要等待接收程序接收此消息。
MQ基本概念
一、对列管理器
队列管理器是MQ系统中最上层的一个概念,由它为咱们提供基于队列的消息服务。
二、消息
在MQ中,咱们把应用程序交由MQ传输的数据定义为消息,咱们能够定义消息的内容并对消息进行广义的理解,好比:用户的各类类型的数据文件,某个应用向其它应用发出的处理请求等均可以做为消息。消息有两部分组成:消息描述符(Message Discription或Message Header),描述消息的特征,如:消息的优先级、生命周期、消息Id等;消 息体(Message Body),即用户数据部分。在MQ中,消息分为两种类型,非永久性(non-persistent)消息和永久性(persistent)消息,非永久 性消息是存储在内存中的,它是为了提升性能而设计的,当系统掉电或MQ队列管理器从新启动时,将不可恢复。当用户对消息的可靠性要求不高,而侧重系统的性 能表现时,能够采用该种类型的消息,如:当发布股票信息时,因为股票信息是不断更新的,咱们可能每若干秒就会发布一次,新的消息会不断覆盖旧的消息。永久 性消息是存储在硬盘上,而且纪录数据日志的,它具备高可靠性,在网络和系统发生故障等状况下都能确保消息不丢、不重。
此外,在MQ中,还有逻辑消息和物理消息的概念。利用逻辑消息和物理消息,咱们能够将大消息进行分段处理,也能够将若干个自己完整的消息在应用逻辑上归为一组进行处理。
三、对列
队列是消息的安全存放地,队列存储消息直到它被应用程序处理。
消息队列如下述方式工做:
a) 程序A造成对消息队列系统的调用,此调用告知消息队列系统,消息准备好了投向程序B;
b) 消息队列系统发送此消息到程序B驻留处的系统,并将它放到程序B的队列中;
c) 适当时间后,程序B从它的队列中读此消息,并处理此信息。
因为采用了先进的程序设计思想以及内部工做机制,MQ可以在各类网络条件下保证消息的可靠传递,能够克服网络线路质量差或不稳定的现状,在传输过程当中,若是 通讯线路出现故障或远端的主机发生故障,本地的应用程序都不会受到影响,能够继续发送数据,而无需等待网络故障恢复或远端主机正常后再从新运行。
在MQ中,队列分为不少种类型,其中包括:本地队列、远程队列、模板队列、动态队列、别名队列等。本地队列又分为普通本地队列和传输队列,普通本地队列是应用程序经过API对其进行读写操做的队列;传输队列能够理解为存储-转发队列,好比:咱们将某个消 息交给MQ系统发送到远程主机,而此时网络发生故障,MQ将把消息放在传输队列中暂存,当网络恢复时,再发往远端目的地。远程队列是目的队列在本地的定义,它相似一个地址指针,指向远程主机上的某个目的队列,它仅仅是个定义,不真正占用磁盘存储空间。模 板队列和动态队列是MQ的一个特点,它的一个典型用途是用做系统的可扩展性考虑。咱们能够建立一个模板队列,当从此须要新增队列时,每打开一个模板队 列,MQ便会自动生成一个动态队列,咱们还能够指定该动态队列为临时队列或者是永久队列,若为临时队列咱们能够在关闭它的同时将它删除,相反,若为永久队 列,咱们能够将它永久保留,为我所用。
四、通道
通道是MQ系统中队列管理器之间传递消息的管道,它是创建在物理的网络链接之上的一个逻辑概念,也是MQ产品的精华。在 MQ中,主要有三大类通道类型,即消息通道,MQI通道和Cluster通道。消息通道是用于在MQ的服务器和服务器之间传输消息的,须要强调指出的是, 该通道是单向的,它又有发送(sender), 接收(receive), 请求者(requestor), 服务者(server)等不一样类型,供用户在不一样状况下使用。MQI通道是MQ Client和MQ Server之间通信和传输消息用的,与消息通道不一样,它的传输是双向的。群集(Cluster)通道是位于同一个MQ 群集内部的队列管理器之间通信使用的。
MQ工做原理安全
如图所示:服务器
首先来看本地通信的状况,应用程序A和应用程序B运行于同一系统A,它们之间能够借助消息队列技术进行彼此的通信:应用程序A向队列1发送一条信息,而当应用程序B须要时就能够获得该信息。网络
其 次是远程通信的状况,若是信息传输的目标改成在系统B上的应用程序C,这种变化不会对应用程序A产生影响,应用程序A向队列2发送一条信息,系统A的MQ 发现Q2所指向的目的队列实际上位于系统B,它将信息放到本地的一个特殊队列-传输队列(Transmission Queue)。咱们创建一条从系统A到系统B的消息通道,消息通道代理将从传输队列中读取消息,并传递这条信息到系统B,而后等待确认。只有MQ接到系统 B成功收到信息的确认以后,它才从传输队列中真正将该信息删除。若是通信线路不通,或系统B不在运行,信息会留在传输队列中,直到被成功地传送到目的地。 这是MQ最基本而最重要的技术--确保信息传输,而且是一次且仅一次(once-and-only-once)的传递。分布式
MQ提供了用于应用集成的松耦合的链接方法,由于共享信息的应用不须要知道彼此物理位置(网络地址);不须要知道彼此间怎样创建通讯;不须要同时处于运行状态;不须要在一样的操做系统或网络环境下运行。性能
若是文章对你用,请支持万事如意网址导航。人工智能
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!但愿你也加入到咱们人工智能的队伍中来!https://blog.csdn.net/jiangjunshowspa