- 浏览: 265417 次
- 性别:
- 来自: 上海
-
文章分类
- 全部博客 (298)
- 工作感悟 (6)
- java基础 (23)
- 计算机硬件知识 (1)
- 计算机网络知识 (2)
- Struts (3)
- Srping (4)
- hibernate (0)
- ibatis (0)
- webservice (4)
- Thread (22)
- maven (5)
- ubuntu/linux/centos/redhat (46)
- SSO (1)
- ESB (0)
- 工作流 (0)
- oracle (15)
- 云计算 (1)
- hadoop (1)
- nosql (0)
- mysql (3)
- sqlserver (0)
- jquery (0)
- 分布式 (3)
- 集群 (0)
- 设计模式 (2)
- EJB (0)
- map (0)
- cache (5)
- Niginx+varnish+squid+Ats (14)
- Apache (0)
- 工作/职业规划 (0)
- Scala & Groovy (1)
- English (4)
- 数据结构/算法 (6)
- 开发工具 (5)
- 测试 (2)
- Exception (0)
- 定时器 (3)
- j2ee (2)
- 部署 (1)
- Openssl (1)
- 操作系统 (3)
- kvm (13)
- libvirt (5)
- PostgreSql (5)
- 虚拟化 (3)
- 概念理解 (1)
- virt-manager (1)
- RESTful (3)
- 其它 (4)
- ssh2 (14)
- windows (1)
- 房产 (2)
- svn (1)
- 手机 (1)
- ant (1)
- flume (2)
- sqoop (1)
- fastdfs (5)
- log4j (1)
- SPDY (1)
- mongodb (2)
- MQ (2)
- Mina (1)
- dubbo (4)
- PMP (1)
- Webshpere (2)
- jvm (1)
- Btrace (1)
- zookeeper (7)
- UML (1)
- spring cloud (6)
- spring boot (5)
- storm (0)
- 软件管理 (1)
- elasticsearch (1)
- 协议 (2)
- docker (1)
- 性能 (2)
- 安全 (1)
- 代码规范 (1)
- mqtt (1)
- lombok (1)
- 车联网 (1)
- kafka (1)
最新评论
IBM MQSeries基本由一个消息传输系统和一个应用程序接口组成,其资源是消息和队列(Messaging and Queuing)。 队列管理器(Queue Manager):管理队列的系统,实现网络通信,保证消息安全可靠地传输到目的地。
用于确保队列之间的信息提供,包括网络中不同系统上的的远程队列之间的信息提供。并保证网络故障或关闭后的恢复。
队列:一个安全的信息存储区。因为信息存放在队列中,所以应用程序可以相互独立的运行,以不同的速度,在不同的时间,在不同的地点。
本地队列:对程序而言,本地队列属于该程序所连接的队列管理器。
远程队列:该队列不属于该程序所连接的队列管理器,而只是远端队列管理器的队列在本地的定义。
传输队列:它是一个本地队列,保存了指定要发送到远端的消息。
死信队列:它是一个本地队列,用于存放无法传递的消息。
通道:在两个队列管理器之间建立起来的数据传输链路。
应用程序接口:应用程序和信息系统之间通过MQSeries API实现的接口。
注意字符集问题
一:MQEnvironment.CCSID = 1381;(在JAVA连接代码时指定一下字符集)
二:修改字符集设置
一般Unix、Linux平台中MQ默认的字符集为819,而Windows平台为1381,所以你必须改变其字符集,使两边的字符集相同。改变方法:
1.通过DOS进入MQ的安装目录,进入/bin下。假如要更改的队列管理器为A
2.用指令“strmqm A”启动队列管理器A。
3.用指令“runmqsc A”启动A的MQSC。
4.运行指令“ALTER QMGR CCSID(819)”“end”则修改字符集为819
用于确保队列之间的信息提供,包括网络中不同系统上的的远程队列之间的信息提供。并保证网络故障或关闭后的恢复。
队列:一个安全的信息存储区。因为信息存放在队列中,所以应用程序可以相互独立的运行,以不同的速度,在不同的时间,在不同的地点。
本地队列:对程序而言,本地队列属于该程序所连接的队列管理器。
远程队列:该队列不属于该程序所连接的队列管理器,而只是远端队列管理器的队列在本地的定义。
传输队列:它是一个本地队列,保存了指定要发送到远端的消息。
死信队列:它是一个本地队列,用于存放无法传递的消息。
通道:在两个队列管理器之间建立起来的数据传输链路。
应用程序接口:应用程序和信息系统之间通过MQSeries API实现的接口。
import com.ibm.mq.MQC; import com.ibm.mq.MQEnvironment; import com.ibm.mq.MQException; import com.ibm.mq.MQMessage; import com.ibm.mq.MQPutMessageOptions; import com.ibm.mq.MQQueue; import com.ibm.mq.MQQueueManager; /** * 发送消息程序 */ public class Send { public static void main(String[] args) { try { // 主机名称 String hostName = "192.168.1.101"; // 端口(缺省 1414) int port = 1515; // 通道名称(缺省) String channel = "SYSTEM.DEF.SVRCONN"; // 队列管理器名称 String qManager = "send"; // 队列名称 (远程队列名) String qName = "Q1"; // Set up the MQEnvironment properties for Client Connections. // 建立MQEnvironment 属性以便客户机连接. MQEnvironment.hostname = hostName; MQEnvironment.port = port; MQEnvironment.channel = channel; MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES); MQEnvironment.CCSID = 1381; // Connection To the Queue Manager. // 连接到队列管理器. MQQueueManager qMgr = new MQQueueManager(qManager); /** * Set up the open options to open the queue for out put * and additionally we have set the option to fail if the queue manager * is quiescing. * * 建立打开选项以便打开用于输出的队列,进一步而言,如果队列管理器是 * 停顿的话,我们也已设置了选项去应对不成功情况. */ int openOptions = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING; // Open the queue. // 打开队列. MQQueue queue = qMgr.accessQueue(qName, openOptions, null, null, null); // Set the put message options , we will use the default setting. // 设置放置消息选项我们将使用默认设置. MQPutMessageOptions pmo = new MQPutMessageOptions(); /** * Next we Build a message The MQMessage class encapsulates the data * buffer that contains the actual message data, together with all the MQMD * parameters that describe the message. * * 下一步我们建立消息,MQMessage类压缩了包含实际消息数据的数据缓冲区, * 和描述消息的所有MQMD 参数. * * To Build a new message, create a new instance of MQMessage class * and use writxxx (we will be using writeString method). * The put() method of MQQueue also takes an instance of the * MQPutMessageOptions class as a parameter. * * 欲建立新消息,创建MQMessage类新实例以及使用writxxx(我们将使用writeString 方法.). * MQQueue 的put()方法也可作为参数MQPutMessageOptions 类的实例. */ // Create The message buffer. // 创建消息缓冲区. MQMessage outMsg = new MQMessage(); // Set the MQMD format field. // 设置MQMD 格式字段. outMsg.format = MQC.MQFMT_STRING; // Prepare message with user data. // 准备用户数据消息. String msgString = "HEAD7C5218991310615536 BOCOMC 0100521899 200909170720470020090917101000000022164428000000020000000000000000000000020000 1110408715 0000 0 1564439990000044399900000 1 1 000 DOMN200909170720470016100115400000000156 HA1310011130028738445 AT032007101900000068835700000110000000000000000020090915000000010000000000431643000000000000 PENG PING 6532CAFCR102 000281548016372856DQPD 2007100120071030 000002000000000000000000000068835700000110000000000000000000000001000000000043164300000048411900000010000000620090917072055550 19790117 518000 20090917000000272977113714719646 1310710130979 MALE SSNO180001016790 MS0000000000 2007101920090912000000002007103001 0 00000004841192007102004064394C 000000000 TAIL"; // Now we put The message on the Queue. // 现在我们在队列上放置消息. outMsg.writeString(msgString); // Commit the transaction. // 提交事务处理. queue.put(outMsg, pmo); qMgr.commit(); System.out.println(" The message has been Sussesfully put/n/n#########"); // Close the the Queue and Queue manager objects. // 关闭队列和队列管理器对象. queue.close(); qMgr.disconnect(); } catch (MQException ex) { System.out.println("An MQ Error Occurred: Completion Code is :/t" + ex.completionCode + "/n/n The Reason Code is :/t" + ex.reasonCode); ex.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } } import com.ibm.mq.MQC; import com.ibm.mq.MQEnvironment; import com.ibm.mq.MQException; import com.ibm.mq.MQGetMessageOptions; import com.ibm.mq.MQMessage; import com.ibm.mq.MQQueue; import com.ibm.mq.MQQueueManager; /** * 消息接收器应用程序 * * 调入MQSeries Java API package * 为客户机连接设置环境属性 * 连接到队列管理器 * 为打开MQSeries 队列设置选项 * 为获取消息打开应用程序 * 设置选项,从应用程序队列获取消息 * 创建消息缓冲区 * 从队列获取消息到消息缓冲区 * 从消息缓冲区读取用户数据并在控制台上显示 */ public class Receiver { public static void PtpReceiver() { try { // 主机名称 String hostName = "192.168.1.101"; // 端口(缺省 1414) int port = 1616; // 通道名称(缺省) String channel = "SYSTEM.DEF.SVRCONN"; // 队列管理器名称 String qManager = "receive"; // 队列名称 (本地对列名) String qName = "Q1"; // 建立MQEnvironment 属性以便客户机连接 MQEnvironment.hostname = hostName; MQEnvironment.port = port; MQEnvironment.channel = channel; MQEnvironment.properties.put(MQC.TRANSPORT_PROPERTY, MQC.TRANSPORT_MQSERIES); MQEnvironment.CCSID = 1381; // Connection To the Queue Manager. // 连接到队列管理器. MQQueueManager qMgr = new MQQueueManager(qManager); /** * Set up the open options to open the queue for out put and * additionally we have set the option to fail if the queue manager * is quiescing. * * 建立打开选项以便打开用于输出的队列, * 进一步而言,如果队列管理器是停顿的话,我们也 * 已设置了选项去应对不成功情况. */ // Open the queue. // 打开队列. int openOptions = MQC.MQOO_INPUT_SHARED | MQC.MQOO_FAIL_IF_QUIESCING; // Set the put message options. // 设置放置消息选项. MQQueue queue = qMgr.accessQueue(qName, openOptions, null, null, null); MQGetMessageOptions gmo = new MQGetMessageOptions(); // Get messages under sync point control. // 在同步点控制下获取消息. gmo.options = gmo.options + MQC.MQGMO_SYNCPOINT; // Wait if no messages on the Queue. // 如果在队列上没有消息则等待. gmo.options = gmo.options + MQC.MQGMO_WAIT; // Fail if QeueManager Quiescing. // 如果队列管理器停顿则失败. gmo.options = gmo.options + MQC.MQGMO_FAIL_IF_QUIESCING; // Sets the time limit for the wait. // 设置等待的时间限制. gmo.waitInterval = 3000; /** * Next we Build a message The MQMessage class encapsulates the data * buffer that contains the actual message data, together with all the MQMD * parameters that describe the message. * * 下一步我们建立消息,MQMessage * 类压缩了包含实际消息数据的数据缓冲区, * 和描述消息的所有MQMD 参数. */ // Create the message buffer. // 创建消息缓冲区. MQMessage inMsg = new MQMessage(); // Get the message from the queue on to the message buffer. // 从队列到消息缓冲区获取消息. queue.get(inMsg, gmo); // Read the User data from the message. // 从消息读取用户数据. String msgString = inMsg.readString(inMsg.getMessageLength()); // 控制台输出 System.out.println(" The Message from the Queue is : /n/n" + msgString); // Commit the transaction. // 提交事务处理. qMgr.commit(); // Close the the Queue and Queue manager objects. // 关闭队列和队列管理器对象. queue.close(); qMgr.disconnect(); } catch (MQException ex) { System.out.println("An MQ Error Occurred: Completion Code is :/t" + ex.completionCode + "/n/n The Reason Code is :/t" + ex.reasonCode); ex.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub PtpReceiver(); } }
注意字符集问题
一:MQEnvironment.CCSID = 1381;(在JAVA连接代码时指定一下字符集)
二:修改字符集设置
一般Unix、Linux平台中MQ默认的字符集为819,而Windows平台为1381,所以你必须改变其字符集,使两边的字符集相同。改变方法:
1.通过DOS进入MQ的安装目录,进入/bin下。假如要更改的队列管理器为A
2.用指令“strmqm A”启动队列管理器A。
3.用指令“runmqsc A”启动A的MQSC。
4.运行指令“ALTER QMGR CCSID(819)”“end”则修改字符集为819
相关推荐
在IT行业中,WebSphere MQ(原名MQSeries)是由IBM开发的一种消息中间件,它允许应用程序之间通过异步传输消息来进行通信,无论这些程序是否同时运行。本实例将聚焦于WebSphere MQ的基本应用,即“发送消息”。 ...
本教程的详细内容可参考附件中的“WebSphere MQ入门教程7.doc”,该文档将深入讲解上述知识点,并包含实例代码和配置步骤,是学习和理解WebSphere MQ的良好参考资料。在实际应用中,读者需结合自身业务场景,灵活...
IBM内部,MQ入门培训教程。全书共分为3部分共14章,第一部分 WebSphere MQ原理和体系结构,分为两章;第二部分 WebSphere MQ系统管理,...第三部分 WebSphere MQ应用开发,由五章组成,介绍程序设计、编写和例子程序。
在这个“Java下操作IBM Websphere MQ的项目案例”中,我们将探讨如何使用Java语言与IBM MQ进行交互,以及如何在Eclipse开发环境中设置和运行相关的项目。 首先,我们需要了解IBM MQ的基本概念。IBM MQ提供了一个...
全书涵盖了WebSphere MQ的基础知识、系统管理和应用开发等多个方面,旨在帮助读者深入理解这一消息中间件的工作原理和实际操作。 ### 第一部分:Websphere MQ原理和体系结构 在这一部分,作者首先介绍了中间件的...
在IT领域,WebSphere MQ(也称为IBM MQ)是一款广泛使用的中间件,它允许应用程序通过消息传递进行通信,提供了一种可靠、高效且...了解和掌握JMS与WebSphere MQ的结合使用,对于开发健壮的企业级应用程序至关重要。
WebsphereMQ,又称为IBM MQ,是一款由IBM开发的消息中间件,用于在不同系统、应用之间传递消息,实现异构环境下的数据通信。这款软件是企业级集成的关键组件,确保了数据传输的可靠性和安全性。 在使用WebsphereMQ...
【基于WebSphere MQ的MQ Trigger实例】是一种在IBM WebSphere MQ消息中间件中实现自动响应消息触发机制的技术。MQ Trigger允许应用程序对特定消息队列中的消息进行监控,并在满足预定义条件时执行相应的操作,例如...
【WebSphere MQ开发JMS】涉及的关键知识点包括Java消息服务(JMS)、Enterprise JavaBean (EJB)、无状态会话Bean(Stateless Session Bean,SSB)、消息驱动Bean(Message-Driven Bean,MDB)、Java Naming and ...
6. 应用开发与实例:通过实际案例展示如何在应用程序中集成和使用Websphere MQ。 7. 管理与监控:讲解如何管理和监控Websphere MQ的运行状态,确保系统的稳定和高效。 8. 故障排查与最佳实践:分享常见问题的解决...
- **应用场景**: 分享了WebSphere MQ在不同行业和场景下的应用实例。 - **配置实例**: 通过具体的配置文件和步骤来展示如何实现特定的功能需求。 综上所述,“IBM WebSphere MQ Windows版快速入门”文档不仅为用户...
通过深入理解并实践这些PCF编程实例,开发人员能够更高效地自动化WebSphere MQ的配置和管理,提高运维效率,并确保系统的稳定性和安全性。在实际项目中,这种编程能力对于处理大规模分布式系统和复杂的企业集成场景...
6. **实例应用**:在“WebSphere MQ 实例”标签中,我们可以期待看到具体的代码示例,如如何连接队列管理器,如何发送和接收消息,以及如何处理异常等。 7. **安全性**:WebSphere MQ支持多种安全机制,包括SSL/TLS...
IBM WebSphere MQ,通常简称为MQ,是一种企业级的消息中间件,由IBM开发,用于在分布式系统中可靠地传输数据。消息中间件的作用是解耦应用程序,使得它们可以通过消息进行通信,而无需直接互相了解对方的实现细节。...
在实际开发中,开发者通常会通过阅读`Websphere MQ API.chm`文件来学习如何初始化连接、创建会话、设置消息属性、发送和接收消息,以及处理异常和错误。这个文档会详细解释每个类和方法的功能,提供示例代码,并指导...
#### 三、WebSphere MQ Java编程实例 **3.1 开发前步骤** - **准备工作**:在编写Java程序之前,需要进行一系列的准备工作,如环境搭建、类库导入等。 - **发送消息至本地队列**:实现一个简单的Java程序,能够将...