WebSphere MQ程序设计初探时间:2006-11-04 00:00 来源:bitsCN.com 字体:[大 中 小] IBM的WebSphere MQ产品可以用来方便地实现分布式异构系统之间的消息传递。对于大型的分布式系统,使用MQ进行数据通信是可以说是非常有效的,而且适用于异构环境(如NT和多种UNIX之间通信)。本文主要介绍:MQ的核心组件介绍、MQ环境的搭建以及利用JAVA对MQ队列管理器的操作的程序设计,希望能起到抛砖引玉的作用。
### WebSphere MQ程序设计知识点详解
#### 一、MQ的核心组件介绍
MQ(Message Queuing)作为IBM的一款成熟的企业级消息中间件,在分布式系统中扮演着重要的角色。它支持多种平台间的异构通信,能够有效地解决分布式环境中消息的传递问题。
##### 1. 队列管理器(QueueManager)
- **定义**:队列管理器是MQ中的核心组件之一,负责管理队列、通道等MQ对象。
- **功能**:
- 提供队列服务。
- 管理属于该队列管理器的所有队列和通道。
- 处理队列管理器之间的消息传递。
##### 2. 队列(Queue)
- **定义**:队列用于存储消息的数据结构。
- **类型**:
- **本地队列(LocalQueue)**:存储在本机队列管理器中的队列。
- **远程队列(RemoteQueue)**:存储在远程队列管理器中的队列。
- **别名队列(AliasQueue)**:指向另一个队列的队列,常用于简化编程。
- **模型队列(ModelQueue)**:作为其他队列的模板。
##### 3. 通道(Channel)
- **定义**:通道是连接两个队列管理器之间的逻辑路径,用于数据传输。
- **类型**:
- **发送方通道(SenderChannel)**:负责将消息从本地队列管理器发送到远程队列管理器。
- **接收方通道(ReceiverChannel)**:接收来自远程队列管理器的消息。
##### 4. 消息(Message)
- **定义**:消息是由一系列字节组成的,用于应用程序间的数据传递。
- **组成部分**:
- **消息描述符(MessageDescriptor)**:包含消息的元数据,如消息类型、格式等。
- **应用数据(ApplicationData)**:实际的应用负载。
##### 5. 集群(Cluster)
- **定义**:集群是一组协同工作的队列管理器,它们共同完成特定的任务。
- **特点**:
- 提高可用性和容错能力。
- 分布式环境下提高消息处理效率。
#### 二、MQ环境的搭建
搭建MQ环境时,通常涉及以下步骤:
##### 1. 安装WebSphere MQ
- **步骤**:
- 下载并安装IBM WebSphere MQ v5.3软件。
- 设置环境变量,确保`classpath`包含了必要的JAR文件(如`com.ibm.mq.jar`和`connector.jar`),并且`path`包含了`bin`目录。
##### 2. 配置队列管理器
- **配置文件**:通过`config.txt`文件来配置队列管理器的基本属性,例如更改字符集编码、定义本地队列等。
- **命令示例**:
```plaintext
* 更改 QM 的字符集编码(CCSID)
ALTER QMGR FORCE CCSID(1381)
* 定义本地队列
DEFINE QLOCAL('LQ_SAMPLE') REPLACE + USAGE(normal) + DEFPSIST(YES)
```
##### 3. 执行配置脚本
- **批处理文件**:使用`mqsetup.bat`脚本来自动化执行队列管理器的创建、启动等操作。
- **命令示例**:
```plaintext
rem 创建缺省队列管理器
echo Creating QM_SAMPLE crtmqm -t 5000 -h 100 -lc -lf 1024 -lp 10 -ls 20 -q QM_SAMPLE
rem 启动队列管理器
echo Starting Queue Manager strmqm QM_SAMPLE
```
#### 三、利用JAVA对MQ队列管理器的操作程序设计
在使用JAVA进行MQ队列管理器的操作时,主要包括以下几个方面:
##### 1. 连接队列管理器
- 使用`com.ibm.mq.MQQueueManager`类建立与队列管理器的连接。
- 示例代码:
```java
MQQueueManager qMgr = new MQQueueManager("QM_SAMPLE");
```
##### 2. 创建队列
- 使用`com.ibm.mq.MQQueue`类创建队列。
- 示例代码:
```java
MQQueue queue = qMgr.accessQueue("LQ_SAMPLE", MQC.MQOO_INPUT_AS_Q_DEF);
```
##### 3. 发送消息
- 使用`com.ibm.mq.MQMessage`类构建消息,并通过队列发送。
- 示例代码:
```java
MQMessage msg = new MQMessage();
byte[] data = "Hello, MQ!".getBytes();
msg.write(data);
queue.put(msg);
```
##### 4. 接收消息
- 使用`get`方法从队列中接收消息。
- 示例代码:
```java
MQMessage rcvMsg = new MQMessage();
queue.get(rcvMsg);
byte[] data = new byte[rcvMsg.getMessageLength()];
rcvMsg.readFully(data);
String message = new String(data);
```
#### 结论
本文详细介绍了WebSphere MQ的核心组件及其功能,并通过具体的实例演示了如何搭建MQ环境以及如何利用JAVA语言进行队列管理器的操作。通过这些内容的学习,读者可以更好地理解MQ的工作原理,并能够在实际项目中灵活运用这些技术。