欢迎光临
我们一直在努力

.net的MSMQ异步调用-.NET教程,.NET Framework

建站超值云服务器,限时71元/月

1、引用system.messagiong.dll

2、using system.messagiong 命名空间

3、创建/建立自己需要的队列(这里监测专有队列)

string queuename=".\\private$\\testqueue";

messagequeue q;

if(messagequeue.exists(queuename) )

{

q=new system.messaging.messagequeue (queuename);

}

else

{

q=messagequeue.create(queuename);

}

这代代码执行后,会在消息队列中的专有队列看到名为testqueue的队列。具体为管理工具–〉计算机管理–〉服务和应用程序–〉消息队列–〉专用队列

可以看到队列中存在的消息

4、向队列发送消息

两种发送消息的方式:

简单消息,直接利用q.send("….");的方式发送,复杂消息(譬如一个特定对象,当然是可序列化的)采用

message m=new message();

m.label ="msg1";

m.body ="test body";

q.send (m);

发送。消息会采用缺省的xml格式编码送到队列中

5、消息接收

主动方式,会同步阻塞当前线程

message m=receive(); //接收同时,从队列中删除消息

or

message m=peek(); //不删除接收到的消息

被动方式,异步调用方式,不会阻塞当前线程

q.receivecompleted +=new receivecompletedeventhandler( receivedevt); //事件

q.beginreceive();

其中receivedevt要么为静态函数,要么必须是属于实例化的对象的可访问函数

private static void receivedevt(object source, receivecompletedeventargs asyncresult)

{

try

{

messagequeue mq = (messagequeue)source;

message m = mq.endreceive(asyncresult.asyncresult);

//此事m为异步接收到的消息

//在此插入处理消息的代码

console.writeline("接收到消息"+m.label );

mq.beginreceive();//接收下一次事件

}

catch(messagequeueexception)

{

}

return;

}

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » .net的MSMQ异步调用-.NET教程,.NET Framework
分享到: 更多 (0)