MQ的Net开发实例从配置到代码编写.docx

上传人:b****6 文档编号:5255287 上传时间:2022-12-14 格式:DOCX 页数:20 大小:481.50KB
下载 相关 举报
MQ的Net开发实例从配置到代码编写.docx_第1页
第1页 / 共20页
MQ的Net开发实例从配置到代码编写.docx_第2页
第2页 / 共20页
MQ的Net开发实例从配置到代码编写.docx_第3页
第3页 / 共20页
MQ的Net开发实例从配置到代码编写.docx_第4页
第4页 / 共20页
MQ的Net开发实例从配置到代码编写.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

MQ的Net开发实例从配置到代码编写.docx

《MQ的Net开发实例从配置到代码编写.docx》由会员分享,可在线阅读,更多相关《MQ的Net开发实例从配置到代码编写.docx(20页珍藏版)》请在冰豆网上搜索。

MQ的Net开发实例从配置到代码编写.docx

MQ的Net开发实例从配置到代码编写

本实例讲解了在.Net里使用MQ发送和接收数据的操作步骤和代码编写。

在此,将实例中要用到的发送队列和接收队列配置在同一台主机上进行测试,实际开发中可以配置在不同的主机中。

以下为实现的过程:

1、安装MQ的客户端软件

2、完成步骤1之后,我们开始配置MQ收发数据时需要用到的队列和通道。

打开IBMWebSphereMQ资源管理器

1接收方的配置

a.新建接收方队列管理器MQ_GET

右建【队列管理器】—【新建】—【队列管理器】,“队列管理器名称”项填MQ_GET,点击【下一步】,一直到后面给“侦听端口号”赋一个值,默认为1414,这里我改成1501。

点击“完成”按钮,完成接收方队列管理器的配置

b.b.创建接收数据的本地队列GET.LQ

在资源管理器中展开刚才新建的队列管理器MQ_GET,右击【队列】—【新建】—【本地队列】

点击“完成”按钮,完成接收数据的本地队列的配置

c.创建接收方通道PUT.GET(在此,接收方的通道名要以下面的发送方的发送通道名一致)

展开【高级】选项,右击【通道】—【新建】—【接收方通道】

点击“完成”按钮,完成接收方通道的配置

d.创建服务器连接通道T.SVRCONN(此连接通道用于代码编程时使用)

展开【高级】选项,右击【通道】—【新建】—【服务器连接通道】

点击“完成”按钮,完成服务器连接通道的配置

至此,接收方需要的配置已全部完成。

2发送方的配置

a.新建发送方队列管理器MQ_PUT

右建【队列管理器】—【新建】—【队列管理器】,“队列管理器名称”项填MQ_PUT,点击【下一步】,一直到后面给“侦听端口号”赋一个值,默认为1414,这里我改成1502(接收方的为1501)。

点击“完成”按钮,完成发送方队列管理器的配置

b.创建本地传输队列PUT.XQ,用于传输

在资源管理器中展开刚才新建的队列管理器MQ_PUT,右击【队列】—【新建】—【本地队列】,【名称】中输入PUT.XQ,点击【下一步】继续

在【用法】一栏选择“传输”

点击【完成】完成本地传输队列的配置

c.创建远程队列PUT.RQ,用于发送数据

在资源管理器中展开刚才新建的队列管理器MQ_PUT,右击【队列】—【新建】—【远程队列定义】,【名称】中输入PUT.RQ,点击【下一步】继续

配置好远程队列、远程队列管理器、传输队列的相关信息,具体对应内容如下图中所示

点击“完成”按钮,完成远程队列的配置、

d.创建发送方通道PUT.GET(与上面接收方的接收通道名一致)

展开【高级】选项,右击【通道】—【新建】—【发送方通道】,点击【下一步】继续

配置“连接名称”和“传输队列”的相关信息,其中连接名称填入接收方的IP和端口号,传输队列填发送方的传输队列名。

点击“完成”按钮,完成发送方通道的配置

e.创建服务器连接通道TT.SVRCONN(此连接通道用于代码编程时使用)

展开【高级】选项,右击【通道】—【新建】—【服务器连接通道】

点击“完成”按钮,完成服务器连接通道的配置

至此,接收方与发送方的相关配置已全部完成。

接下来,进行数据发送与接收测试。

3、数据发送与接收测试

a.展开发送队列管理器MQ_PUT,【高级】\【通道】,在右边的内容选项区里右键单击发送方通道PUT.GET,选择“启动”,启动发送方通道,当发送方通道PUT.GET启动时,接收方的接收通道PUT.GET将会同时启动

b.发送测试数据

点击电脑左下角的“开始”\运行\在里面输入cmd\确定,打开cmd.exe界面

输入:

amqsputPUT.RQMQ_PUT

回车

输入:

Thisistestmessage!

回车两次

c.查看测试数据

回到IBMWebSphereMQ资源管理器,展开接收方队列管理器MQ_GET,单击“队列”,在右边的内容框里右键单击本地队列GET.LQ,选择“浏览消息”

从上图中可以看出,测试数据发送与接收都是成功的,接下来讲解在.Net里编写代码测试的操作方法。

4、在.Net里编写代码测试

a.启动VisualStudio2008,文件\新建\项目,名称为“WebSphereMQTest”

b.从工具箱中拉两个Label、两个TextBox、两个Button放入Form窗体中

Lable1Text:

发送信息:

Label2Text:

读取信息:

TextBox1:

Name:

sendMsgBox

TextBox2:

Name:

getMsgBox

Button1:

Name:

getBtnText:

发送

Button1:

Name:

sendBtnText:

读取

c.添加IBM的引用(将WebSphereMQ安装路径下的amqmdnet.dll引用进去)

右击解决方案,添加引用

(本人的安装路径为:

D:

\WebSphereMQ\bin\amqmdnet.dll)

d.编写代码实现数据收发

usingSystem;

usingSystem.Windows.Forms;

usingIBM.WMQ;

usingSystem.Collections;

namespaceWebSphereMQTest

{

publicpartialclassForm1:

Form

{

//发送方

privatestaticStringsQmName="MQ_PUT";//队列管理器名称

privatestaticStringsQName="PUT.RQ";//本地远程队列

privatestaticHashtablesConnProperties=newHashtable();

//读取方

privatestaticStringgQmName="QM_GET";//队列管理器名称

privatestaticStringgQName="GET.LQ";//本地队列

privatestaticHashtablegConnProperties=newHashtable();

publicForm1()

{

InitializeComponent();

//初始化发送方的相关配置信息

InitSendMessage();

//初始化接收方的相关配置信息

InitGetMessage();

}

//初始化发送方的相关配置信息

publicvoidInitSendMessage()

{

//发送

sConnProperties.Add(MQC.TRANSPORT_PROPERTY,MQC.TRANSPORT_MQSERIES_CLIENT);

sConnProperties.Add(MQC.HOST_NAME_PROPERTY,"127.0.0.1");//发送方服务器IP

sConnProperties.Add(MQC.CHANNEL_PROPERTY,"TT.SVRCONN");//发送方本地服务器连接通道

sConnProperties.Add(MQC.PORT_PROPERTY,1502);//发送方端口号

}

//初始化接收方的相关配置信息

publicvoidInitGetMessage()

{

//读取

gConnProperties.Add(MQC.TRANSPORT_PROPERTY,MQC.TRANSPORT_MQSERIES_CLIENT);

gConnProperties.Add(MQC.HOST_NAME_PROPERTY,"127.0.0.1");//接收方服务器IP

gConnProperties.Add(MQC.CHANNEL_PROPERTY,"T.SVRCONN");//接收方本地服务器连接通道

gConnProperties.Add(MQC.PORT_PROPERTY,1501);//接收方端口号

}

 

//发送消息

publicvoidSendMessages()

{

MQQueueManagersQMgr=null;//发送消息的队列管理器

MQQueueremoteQ=null;//发送消息的队列

stringsendMessages=sendMsgBox.Text.ToString();//发送的消息

try

{

//Createaconnectiontothequeuemanager

sQMgr=newMQQueueManager(sQmName,sConnProperties);

//Nowspecifythequeuethatwewishtoopen,

//andtheopenoptions...

remoteQ=sQMgr.AccessQueue(sQName,MQC.MQOO_OUTPUT|MQC.MQOO_FAIL_IF_QUIESCING|MQC.MQOO_INQUIRE);

//DefineasimpleWebSphereMQmessage,andwritesometextinUTFformat..

MQMessageputMessage=newMQMessage();

putMessage.WriteString(sendMessages);

//specifythemessageoptions...

MQPutMessageOptionspmo=newMQPutMessageOptions();

//acceptthedefaults,sameasMQPMO_DEFAULT

//putthemessageonthequeue

remoteQ.Put(putMessage,pmo);

remoteQ.Close();//关闭队列

sQMgr.Disconnect();//关闭队列管理器

MessageBox.Show("发送成功!

");

}

catch(MQExceptionMqEx)

{

Console.WriteLine(MqEx.Message);

}

}

//读取消息

publicvoidGetMessages()

{

getMsgBox.Text="";

MQQueueManagergQMgr=null;//接收消息的队列管理器

MQQueuegetQueue=null;//接收消息的队列

try

{

gQMgr=newMQQueueManager(gQmName,gConnProperties);//连接队列管理器

getQueue=gQMgr.AccessQueue(gQName,MQC.MQOO_INPUT_AS_Q_DEF|MQC.MQOO_INQUIRE);//连接队列

MQGetMessageOptionsgmo=newMQGetMessageOptions();

intdepth=getQueue.CurrentDepth;

for(inti=0;i

{

MQMessagerecMsg=newMQMessage();

getQueue.Get(recMsg,gmo);//读取信息存入recMsg

getMsgBox.Text+=recMsg.ReadString(recMsg.MessageLength)+"\r\n";

}

}

catch(MQExceptionmqex)

{

Console.WriteLine(mqex.Message);

}

finally

{

getQueue.Close();//关闭接收队列

gQMgr.Disconnect();//关闭接收队列管理器

}

}

//发送按钮

privatevoidsendBtn_Click(objectsender,EventArgse)

{

SendMessages();

}

//读取按钮

privatevoidgetBtn_Click(objectsender,EventArgse)

{

GetMessages();

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机软件及应用

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1