文档介绍:MQ的基本概念:首先了解什么是mq?mq的作用是什么?mq是通讯中间件。他的作用是省去开发人员开发通讯工具的时间,节省开发成本,提高开发效率。如何安装mq?根据以往的经验,win版的mq比较容易安装,傻瓜式,一路next就可以。aix版本的用smitty安装。linux版本用rpm-ivh安装。1)队列管理器队列管理器是MQ系统中最上层的一个概念,由它为我们提供基于队列的消息服务。简单的说就是一个大容器的管理员,这个大容器里放了很多东西。2)消息在MQ中,我们把应用程序交由MQ传输的数据定义为消息,我们可以定义消息的内容并对消息进行广义的理解,比如:用户的各种类型的数据文件,某个应用向其它应用发出的处理请求等都可以作为消息。消息有两部分组成:消息描述符(MessageDiscription或MessageHeader),描述消息的特征,如:消息的优先级、生命周期、消息Id等;消息体(MessageBody),即用户数据部分。在MQ中,消息分为两种类型,非永久性(non-persistent)消息和永久性(persistent)消息,非永久性消息是存储在内存中的,它是为了提高性能而设计的,当系统掉电或MQ队列管理器重新启动时,将不可恢复。当用户对消息的可靠性要求不高,而侧重系统的性能表现时,可以采用该种类型的消息,如:当发布股票信息时,由于股票信息是不断更新的,我们可能每若干秒就会发布一次,新的消息会不断覆盖旧的消息。永久性消息是存储在硬盘上,并且纪录数据日志的,它具有高可靠性,在网络和系统发生故障等情况下都能确保消息不丢、不重。3)队列队列是消息的安全存放地,队列存储消息直到它被应用程序处理。通俗的理解就是大容器里的东西,存放消息的盒子。消息队列以下述方式工作:a)程序A形成对消息队列系统的调用,此调用告知消息队列系统,消息准备好了投向程序B;b)消息队列系统发送此消息到程序B驻留处的系统,并将它放到程序B的队列中;c)适当时间后,程序B从它的队列中读此消息,并处理此信息。在MQ中,队列分为很多种类型,其中包括:本地队列、远程队列、模板队列、动态队列、别名队列等。本地队列又分为普通本地队列和传输队列,普通本地队列是应用程序通过API对其进行读写操作的队列;传输队列可以理解为存储-转发队列,比如:我们将某个消息交给MQ系统发送到远程主机,而此时网络发生故障,MQ将把消息放在传输队列中暂存,当网络恢复时,再发往远端目的地。远程队列是目的队列在本地的定义,它类似一个地址指针,指向远程主机上的某个目的队列,它仅仅是个定义,不真正占用磁盘存储空间。模板队列和动态队列是MQ的一个特色,它的一个典型用途是用作系统的可扩展性考虑。我们可以创建一个模板队列,当今后需要新增队列时,每打开一个模板队列,MQ便会自动生成一个动态队列,我们还可以指定该动态队列为临时队列或者是永久队列,若为临时队列我们可以在关闭它的同时将它删除,相反,若为永久队列,我们可以将它永久保留,为我所用。4)通道通道是MQ系统中队列管理器之间传递消息的管道,它是建立在物理的网络连接之上的一个逻辑概念,也是MQ产品的精华。通俗的理解就是大容器和大容器之间,程序和容器之间进行通讯的途径。在MQ中,主要有三大类通道类型,即消息通道,MQI通道和Cluster通道。消息通道是用于在MQ的服务器和服务器之间传输消息的,需要强调指出的是,该通道是单向的,它又有发送(sender),接收(receive),请求者(requestor),服务者(server)等不同类型,供用户在不同情况下使用。MQI通道是MQClient和MQServer之间通讯和传输消息用的,与消息通道不同,它的传输是双向的。群集(Cluster)通道是位于同一个MQ群集内部的队列管理器之间通讯使用的。mq是如何实现通讯的?mq的通讯方式有两种,通俗的说就是mq之间进行通讯,开发的程序和mq之间的通讯。mq之间进行通讯:通过发送接收通道建立tcp连接进行消息传输,称为server对server开发的程序和mq之间的通讯:通过服务器连接通道进行传输,client对serverMQ的工作原理如图所示:首先来看本地通讯的情况,应用程序A和应用程序B运行于同一系统A,它们之间可以借助消息队列技术进行彼此的通讯:应用程序A向队列1发送一条信息,而当应用程序B需要时就可以得到该信息。其次是远程通讯的情况,如果信息传输的目标改为在系统B上的应用程序C,这种变化不会对应用程序A产生影响,应用程序A向队列2发送一条信息,系统A的MQ发现Q2所指向的目的队列实际上位于系统B,它将信息放到本地的一个特殊队列-传输队列(TransmissionQueue)。我们建立一条从系统A到系统B的消息通道,消息通道代理将从传输队列中读取消息,并传递这条信息