知识大全 基于WebSphere MQ的收发消息程序
Posted 消息
篇首语:生命是不能被略过的,一定有人敢选最难的那条路,一定有人把生命排在利益前面。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 基于WebSphere MQ的收发消息程序相关的知识,希望对你有一定的参考价值。
基于WebSphere MQ的收发消息程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
WebSphere MQ(以下简称MQ)是IBM公司享有盛誉的商业通信中间件 它被世界范围的许多大型企业广泛采用 它提供一个具有工业标准 安全 可靠的消息传输系统 MQ基本由一个消息传输系统和一个应用程序接口组成 应用程序使用MQ的API(消息队列接口MQI)函数和队列管理器(MQ运行时刻的程序)进行通信 队列管理器在工作时 它需要用到对象如队列和通道 同时 队列管理器也是一个对象 图 所示为MQ应用程序在运行时刻的图示 > > 消息是一个信息单元 它由两部分组成 从一个程序发往另外一个程序的应用程序数据以及消息描述符或者消息头 消息描述符用来标识消息(message ID) 同时它还包括一些控制信息 如消息类型 消息过期的时间 消息优先级等等 一条消息的最大长度为 MB 默认的最大消息长度为 MB 消息的最大长度依赖于MQ的版本 MQ第五版支持消息的最大长度为 MB 队列是一个安全的存储消息的地方 消息的存储一般是有顺序的 因为消息存放在队列中 所以应用程序可以以不同的速度 在不同的时间 不同的地点相互独立的运行 消息队列通信是应用程序之间进行通信的一种方式 应用程序在没有专有连接或者物理连接的情况下 能够通过向队列写入或读出消息进行通信 也即程序之间不是通过互相调用 而是通过向队列发送数据来进行通信 在这种通信方式下 应用程序不需要具有并发性 对于异步的消息通信 程序发送方不需要专门等待已发消息的回复 而是可以处理下一个事件 与之相对的是 同步消息通信在处理下一个事件之前必须等待已发消息的回复 对于用户来说 底层的协议是透明的 用户只需要考虑会话的程序或数据入口 MQ应用于客户机/服务器模式或者分布式系统 应用程序可以工作在一个工作站上 也可以运行在不同平台的不同机器上 应用程序具有很好的移植性 能够轻松的从一个系统或者平台转移到另一个系统或者平台 程序的编写支持多种语言 包括Java 同样的 队列也适合许多不同的平台 因为MQ通过队列进行通信 所以它可以被看成是使用间接的程序 程序方式通信 程序员可以不指定接收消息的目标程序的名称 但是可以指定接收消息的队列的名称 每一个队列和一个程序相联系 一个程序可以有一个或者多个接收队列 而且可以有多个输出队列 输出队列包含着很多信息 这些信息可以是用来供服务器处理的 也可以是返还给发送消息的客户端的回复信息 使用MQ进行通信时程序员不必担心目标程序是否可用或是否繁忙 甚至不用考虑目标机器是否正常运行或者是否连接上了 程序员发送消息给目标队列 而目标队列是和目标程序相联系的 目标程序可能目前不可用 不用担心 MQ能够解决这种情况 如果需要 它甚至能够启动目标程序 如果目标程序不可用 消息会停留在队列中 稍后再被处理 队列可以在发送消息的机器中 也可以在接收消息的机器中 这取决于两台机器的两个系统之间是否能够建立连接 应用程序可以整天运行 也可以采用激发机制 所谓激发 就是指当有一条或数条消息到达队列时自动启动某个程序 > > 图 说明了两个应用程序A和B之间是如何进行通信的 可以看到有两个队列 各队列里面存放着要接收或者发送的消息 程序和队列之间的方形图表示MQI(消息队列接口API) 程序就是使用MQI来和MQ的实时程序 队列管理器进行通信的 简单地说 MQ的核心部分是一个能够存储消息的服务器及一组能够转发消息的进程 分布在多个系统(异地 异种平台)上的应用程序依靠这种机制来交换要处理的数据 队列管理器作为一个服务器 把消息以可靠的方式存储 即使机器发生故障重新启动后依然不会丢失 其可靠级别与数据库服务器相等 队列管理器间通过特别的交换机制保证数据不会因为底层网络的故障而丢失 并且能够在多点间接力式地传送 JMS是J EE中的一个接口标准 为JAVA程序定义了一种标准的使用消息交换数据的编程方式 但JMS本身并不能实现消息的传送 一个调用JMS的应用程序发出消息调用后 具体的消息传送工作还需要底层的消息中间件来执行传送工作 JMS的作用就是使应用程序开发人员不需要关心底层的传送软件的种类 同一段程序 既可以用MQ传送 也可以用其他消息中间件来传送 如WEBLOGIC内含的具有消息中间件功能的部件 MQ软件提供一个JAVA软件包 里面有JMS类库 和一套MQ的类库 不熟悉MQI编程方法的程序员可以用JMS 比较熟悉MQI编程方法的程序则可以用MQ类库来编程 下面的小程序是使用Java实现从队列管理器QM_SERVER中的队列INITQ写入或读出消息 package transfer; import ibm mq *; public class SendMSG private MQQueueManager qMgr;//定义一个队列管理器变量 public static void main(String args[]) new SendMSG (); public SendMSG () MQEnvironment hostname= ;//本地IP MQEnvironment channel= CHANNEL ;//用来通信的通道 MQEnvironment CCSID = ; try qMgr=new MQQueueManager( QM_SERVER );//队列管理器名称 int openOptions=MQC MQOO_INPUT_AS_Q_DEF|MQC MQOO_OUTPUT|MQC MQOO_INQUIRE; MQQueue queue=qMgr accessQueue( INITQ openOptions null null null); //建立连接 MQMessage hello=new MQMessage();//要写入队列的消息 try hello format=MQC MQFMT_STRING ; hello characterSet= ; hello writeString( 这是测试! ); catch(java io IOException ex) finally; MQPutMessageOptions pmo=new MQPutMessageOptions(); for (int i= ;i<= ;i++)//将消息依次写入队列 hello expiry= ; //设置消息用不过期 queue put(hello);//将消息放入队列 queue close() ;//关闭队列 qMgr disconnect() ; //断开连接 catch(Exception ex) finally; 程序的运行结果如下图 所示 > > 这个例子仅仅是向队列INITQ写入了 条相同的消息 当然 在实际应用中 消息可能是多种多样的 如果要传送数据库的内容 则可以在写入消息时 用一些特殊的符号来将各字段的数据区分开 那么在消息读出时 也可以根据此特殊的符号来读取数据 依据同样的步骤 和队列管理器建立连接 从队列读取消息 关闭队列 断开连接 可以用Java写出如何从队列中读出消息 MQ有许多显著的优点 比如借住在不同的平台上使用相同的应用程序接口 它能轻松的实现跨平台通信 从而能够使开发人员避开网络的复杂性 比如它对消息的处理不依赖于时间 在消息创建和发送时 不受时间的限制 增加了处理的灵活性 总之 MQ的特点以及IBM公司在企业应用领域所付出的巨大努力 使得它具有极强的生命力 现在 大量的政府部门 金融 电信和企业用户使用WebSphere MQ作为企业电子商务的基础平台 有理由相信 随着政府办公自动化 企业信息化的脚步的不断前进 WebSphere在中国市场上一定会成为一颗耀眼的明星 cha138/Article/program/Java/JSP/201311/19439相关参考
WebSphereMQ传输环境搭建和测试 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
基于Spring框架的WebSphere应用开发 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
公文的收发要履行的处理程序包括登记、分办、拟办和_____。A、批办B、承办C、受办D、催办答案:ABD解析:收、发文程序包括收文和发文两个过程。收文包括登记、分办、批办、承办、催办等环节。发文包括拟
基于WCF和MSMQ构建发布/订阅消息总线 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 本文是
知识大全 基于消息与.Net Remoting的分布式处理架构
基于消息与.NetRemoting的分布式处理架构 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
知识大全 ASP.NET入门教程 12.10.1加密和基于消息的安全性
ASP.NET入门教程12.10.1加密和基于消息的安全性 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一
消息评估计点法评估程序(1)收集所有可能影响股票行情的消息。(2)将各种消息按正确的、反面的性质分类。(3)再按消息的重要性,安排其主次顺序。例如分为极重要消息、重要消息、普遍消息、轻微消息、不确定消
基于SMTP的JAVA邮件发送程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这个程序没有使
基于OracleADF的应用程序开发 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!摘要:介绍了AD
一个基于UDP的聊天应用程序 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 这些天由于有个pp的