IBM WebSphere MQ介绍安装以及配置服务详解

时间:2023-03-09 02:07:23
IBM WebSphere MQ介绍安装以及配置服务详解

首先介绍一下MQ

MQ消息队列的简称是一种应用程序对应用程序的通信方法。说白了也就是通过队列的方式来对应用程序进行数据通信。而无需专用链接来链接它们。

MQ的通讯方式

1.数据报的方式 Datagram (Send and forget)

应用程序在创建完消息后。利用MQ的API将消息发送到队列中。它充分利用了MQ(once and once only )

2.请求和应答方式 Request/Reply

发送消息之后需等待对方处理结果。  需考虑如下问题:

a.等待应答的时间是多少?

b.如果没有应答怎么办。

c.本次session是否需要保留?

MQ的开发流程

1.让应用程序与队列管理器链接,通过MQconnect调用来进行此链接。

2.使用MQOpen调用为输出打开一个队列

3.应用程序使用MQPut调用将其数据放到队列上。

4.调用MQOpen调用打开输入队列

5.使用MQGet从队列上接收数据

安装步骤。(此处为转载文章,作者已经证实所有步骤。)

Windows下 WebSphere MQ
服务端的安装:

1)把WebSphere MQ
Windows版服务器CD-ROM插入CD-ROM驱动器。

2)如果安装了自动运行,那么会启动安装进程。如果不启动,则双击CD-ROM上的根目录中的Setup图标以启动安装程序。
(3)请等待,直到出现"WebSphere MQ

安装启动板"窗口为止。
(4)如果需要更改安装的本地语言,单击"选择语言"图标,然后从列表中选择所需的语言。
(5)选择必备软件选项。
选择典型安装后,安装界面上的每个安装项右边有一个对钩号(表示已安装),反之则为一个叉号(表示还没有安装,如果要装
MQ,则必须先把这些软件装好)。
如果出现了叉号:
1)单击项目左边的
"+"号以显示安装连接;
2)选择要使用的安装源的选项,从以下各项选择:

  • WebSphere MQ CD
  • 因特网
  • 网络

6)安装完成时,单击项目左边的"-"符号。
注意:对于定制安装,可能不需要所有的必备软件。

7)安装完所有的必备软件,然后选择"网络先决条件"选项。

8)选择"WebSphere
MQ"安装选项 

(9)选择启动WebSphere
MQ安装程序,然后等待,直到显示了带有欢迎信息的"WebSphere MQ安装"窗口为止。

(10)单击"下一步"按钮继续。

(11)阅读面板上的信息和许可证条款,选择接受,然后单击"下一步"。

(12)如果机器上未安装过此产品的前一个版本,则显示"安装类型"面板。选择希望的安装类型(一般选择"典型"安装即可),然后单击"下一步"按钮。

(13)"WebSphere
MQ安装"窗口显示"安装WebSphere MQ就绪"信息。该窗口还显示用户选中的安装摘要,单击"安装"开始正式安装。


14)成功安装WebSphere
MQ后,"WebSphere MQ安装"窗口显示以下信息:安装向导成功完成。

15)单击"完成"按钮启动"准备WebSphere
MQ"向导。
IBM WebSphere MQ介绍安装以及配置服务详解安装图示
IBM WebSphere MQ介绍安装以及配置服务详解
IBM WebSphere MQ介绍安装以及配置服务详解
IBM WebSphere MQ介绍安装以及配置服务详解
IBM WebSphere MQ介绍安装以及配置服务详解
IBM WebSphere MQ介绍安装以及配置服务详解
IBM WebSphere MQ介绍安装以及配置服务详解
IBM WebSphere MQ介绍安装以及配置服务详解
IBM WebSphere MQ介绍安装以及配置服务详解
IBM WebSphere MQ介绍安装以及配置服务详解

 
IBM WebSphere MQ介绍安装以及配置服务详解
IBM WebSphere MQ介绍安装以及配置服务详解
IBM WebSphere MQ介绍安装以及配置服务详解
IBM WebSphere MQ介绍安装以及配置服务详解
IBM WebSphere MQ介绍安装以及配置服务详解
IBM WebSphere MQ介绍安装以及配置服务详解
IBM WebSphere MQ介绍安装以及配置服务详解
IBM WebSphere MQ介绍安装以及配置服务详解
应用分析
该章节主要内容包括MQ服务端的基本配置,如队列管理器,队列以及通道的建立,

且包含JAVA实现的客户端程序。由此构成一个完整的客户端-服务器的流程。
 
服务端配置
1)点
"开始"->"所有程序"->"IBM
WebSphere MQ"->"WebSphere MQ 资源管理器",进入WebSphere MQ
资源管理器界面。如下图所示:


IBM WebSphere MQ介绍安装以及配置服务详解
图9
服务端配置



IBM WebSphere MQ介绍安装以及配置服务详解
2)创建名为
"QM_JACK"的队列管理器
<1>选中
"队列管理器"->"新建"->"队列管理器",如下图所示:


IBM WebSphere MQ介绍安装以及配置服务详解
图10 创建名为"QM_JACK"的队列管理器


IBM WebSphere MQ介绍安装以及配置服务详解
<2>在队列管理中输入
"QM_JACK",其他选项默认不变,点"下一步":


IBM WebSphere MQ介绍安装以及配置服务详解
图11 在队列管理中输入"QM_JACK"


IBM WebSphere MQ介绍安装以及配置服务详解
<3>设置队列日志(本步骤采用系统默认设置),点
"下一步":


IBM WebSphere MQ介绍安装以及配置服务详解
图12
设置队列日志


IBM WebSphere MQ介绍安装以及配置服务详解
<4>启动队列管理器,创建服务器连接通道,允许在
TCP/IP上进行队列管理器的远程管理,点击"下一步":


IBM WebSphere MQ介绍安装以及配置服务详解
图13 创建服务器连接通道


IBM WebSphere MQ介绍安装以及配置服务详解
<5>设置队列管理器
QM_JACK的侦听端口:8927(用户可以根据需要自行更改端口号),点击"完成"。


IBM WebSphere MQ介绍安装以及配置服务详解
14
设置队列管理器QM_JACK的侦听端口

IBM WebSphere MQ介绍安装以及配置服务详解
<6>系统进入等待界面:


IBM WebSphere MQ介绍安装以及配置服务详解
15
系统等待界面

IBM WebSphere MQ介绍安装以及配置服务详解
<7>队列管理器
QM_JACK创建成功


IBM WebSphere MQ介绍安装以及配置服务详解
16
系统队列管理器QM_JACK创建成功

IBM WebSphere MQ介绍安装以及配置服务详解
3)在
QM_JACK下创建名为"QUEUE_RECV"和"QUEUE_REPLY"的本地队列(客户可以根据自己的需求随意更改本地队列的名字和数量,这里创建这两个本地队列只是为之后的MQ_Tuxedo项目作准备):


IBM WebSphere MQ介绍安装以及配置服务详解
图17 定义本地队列


IBM WebSphere MQ介绍安装以及配置服务详解

IBM WebSphere MQ介绍安装以及配置服务详解
图18 定义本地队列

IBM WebSphere MQ介绍安装以及配置服务详解

设置队列名后其他属性全为系统默认值,点击
"确定"。
4)在
QM_JACK下创建名为"CNN_JACK"的服务器通道。


IBM WebSphere MQ介绍安装以及配置服务详解
19
创建服务器连接通道

IBM WebSphere MQ介绍安装以及配置服务详解

IBM WebSphere MQ介绍安装以及配置服务详解
图20 创建服务器连接通道

IBM WebSphere MQ介绍安装以及配置服务详解

通道名称设为
CNN_JACK,其他选项保留为系统默认设置,点击"确定"。
5)在
MQ服务器端的计算机用户中添加MQ客户端所在计算机的系统用户。比如我的MQ客户端被Suse
Linux下的root用户使用,那么,我们就需要在MQ的服务端(也就是Windows
xp系统中添加名为"root"的用户)所在的计算机系统中添加名为"root"的用户。具体步骤如下:
<1>点击
"开始"->"控制面板"->"计算机管理"->"系统工具"->"本地用户和组"->"用户",点右键,选"新用户",如下图所示:


IBM WebSphere MQ介绍安装以及配置服务详解
图21
创建系统用户


IBM WebSphere MQ介绍安装以及配置服务详解
<2>创建新用户:
root(注意:这里的用户名"root"是MQ客户端所在系统的用户名,用户要根据具体情况进行修改)

IBM WebSphere MQ介绍安装以及配置服务详解图22 创建系统用户
IBM WebSphere MQ介绍安装以及配置服务详解

随意设置一个有效密码,选中密码永不过期,点击
"创建"。
<3>将新用户加入
mqm组(注意:这里的mqm组是我们安装完MQ
Server后系统自动创建的)。具体操作如下:


IBM WebSphere MQ介绍安装以及配置服务详解
图23
设置系统用户所在组


IBM WebSphere MQ介绍安装以及配置服务详解 
点击
"属性":


IBM WebSphere MQ介绍安装以及配置服务详解
图24 设置系统用户所在组

IBM WebSphere MQ介绍安装以及配置服务详解
点击
"添加":

IBM WebSphere MQ介绍安装以及配置服务详解图25
设置系统用户所在组

IBM WebSphere MQ介绍安装以及配置服务详解

输入对象名称:
mqm,点击"确定":


IBM WebSphere MQ介绍安装以及配置服务详解
图26 设置系统用户所在组

IBM WebSphere MQ介绍安装以及配置服务详解
root用户被添入
mqm组中:

IBM WebSphere MQ介绍安装以及配置服务详解图27 设置系统用户所在组
IBM WebSphere MQ介绍安装以及配置服务详解

点击
"应用",点击"确定"。
重启机器。至此,
MQ服务端的配置完成。
客户端实现   JAVA客户端源码
IBM WebSphere MQ介绍安装以及配置服务详解
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Properties;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
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; /**
* 函数功能: MQjava客户端实现
*/ public class MQClient { /**
* Logger for this class
*/
private static final Log logger = LogFactory.getLog(MQClient.class);
private String strExtraSendXmlFileName = "D:\\jndi.properties";
private static Properties props; static {
props = new Properties();
props.put("mqHostName", "139.31.89.67");
props.put("mqPort", "4032");
props.put("mqCCSID", "1381");
props.put("mqUserName", "liujx");
props.put("mqPassword", "linux");
props.put("mqQManager", "Monitor_Queue_Manager");
props.put("mqChannel", "Monitor_Conn_Chanel");
props.put("mqLocalOutQueue", "Q_RECEIVE");
props.put("mqLocalInQueue", "Q_RECEIVE"); } /**
*
* 函数功能:TODO 主测试方法 <br>
* 相关参数: <br>
*
* @param args
* 修改记录: <br>
*/ public static void main(String[] args) { MQClient test = new MQClient();
// 发送消息
test.putMsg();
// 接收消息
test.getMsg();
} public void putMsg() {
// MQ发送数据
try {
// 建立MQ客户端应用上下文环境
MQEnvironment.hostname = props.getProperty("mqHostName");
MQEnvironment.port = Integer.parseInt(props.getProperty("mqPort"));
MQEnvironment.CCSID = Integer
.parseInt(props.getProperty("mqCCSID"));
MQEnvironment.channel = props.getProperty("mqChannel");
MQEnvironment.userID = props.getProperty("mqUserName");
MQEnvironment.password = props.getProperty("mqPassword");
// 连接队列管理器
MQQueueManager qMgr = new MQQueueManager(
props.getProperty("mqQManager"));
int openOptions = MQC.MQOO_OUTPUT | MQC.MQOO_FAIL_IF_QUIESCING;
// 打开队列
MQQueue q = null;
try {
q = qMgr.accessQueue(props.getProperty("mqLocalOutQueue"),
openOptions);
} catch (MQException me) {
System.out.println("打开队列出现通讯异常" + me.getMessage() + "\n");
return;
}
InputStream fins = new FileInputStream(new File(
strExtraSendXmlFileName));
byte[] data = new byte[fins.available()];
fins.read(data);
fins.close();
MQMessage msg = new MQMessage();
msg.write(data);
// 放入消息
q.put(msg);
System.out.println("客户端发送数据包成功..");
// 关闭队列
q.close();
// 断开队列管理器连接
qMgr.disconnect();
} catch (MQException e) {
if (logger.isDebugEnabled())
logger.debug(e.getMessage());
e.printStackTrace();
} catch (Exception e) {
if (logger.isDebugEnabled())
logger.debug(e.getMessage());
e.printStackTrace();
}
} /**
*
* 函数功能:TODO 获取数据 <br>
* 修改记录: <br>
*/
public void getMsg() {
// MQ接收数据
try {
// 建立用上下文环境
MQEnvironment.hostname = props.getProperty("mqHostName");
MQEnvironment.port = Integer.parseInt(props.getProperty("mqPort"));
MQEnvironment.CCSID = Integer
.parseInt(props.getProperty("mqCCSID"));
MQEnvironment.channel = props.getProperty("mqChannel");
MQEnvironment.userID = props.getProperty("mqUserName");
MQEnvironment.password = props.getProperty("mqPassword");
// 建立队列管理器
MQQueueManager qMgr = new MQQueueManager(
props.getProperty("mqQManager"));
int openOptions = MQC.MQOO_INPUT_AS_Q_DEF
| MQC.MQOO_FAIL_IF_QUIESCING;
// 打开队列
MQQueue q = qMgr.accessQueue(props.getProperty("mqLocalInQueue"),
openOptions);
MQGetMessageOptions mgo = new MQGetMessageOptions();
mgo.options |= MQC.MQGMO_NO_WAIT;
// 构造返回消息
MQMessage msg = new MQMessage();
if ((msg = fetchOneMsg(q)) != null) {
byte[] xmlData = new byte[msg.getDataLength()];
msg.readFully(xmlData);
logger.info(new String(xmlData));
System.out.println("接收服务器端返回数据包成功..\n接收数据为:\n"
+ new String(xmlData));
}
// 关闭队列
q.close();
// 断开队列管理器
qMgr.disconnect();
} catch (MQException e) {
logger.error(e);
e.printStackTrace();
} catch (Exception e) {
logger.error(e);
e.printStackTrace();
}
} /**
*
* 函数功能:TODO 从队列中取出消息 <br>
* 相关参数: <br>
*
* @param q
* @return
* @throws Exception
* 修改记录: <br>
*/
private static MQMessage fetchOneMsg(MQQueue q) throws Exception {
MQGetMessageOptions mgo = new MQGetMessageOptions();
mgo.options |= MQC.MQGMO_NO_WAIT;
MQMessage msg = new MQMessage();
try {
// 获取消息
q.get(msg, mgo);
} catch (MQException e) {
return null;
}
return msg;
}
}
IBM WebSphere MQ介绍安装以及配置服务详解

出处:https://www.cnblogs.com/swugogo/p/5917677.html