的用法 网络消息队列
。Net使用消息队列,并在windows组件的帮助下存储一系列要完成的任务,而不是对程序使用同一个队列,这样便于不同程序之间的数据共享和协作.以我的经验来看,这在某些方面与session类似(但也有很多不同),但都是一样的:session可以在aspnet_state服务中存储信息,如果网站被重新编译或重启,则会话不会丢失(除了这种情况,会话超时是正常的)。win7安装了消息队列组件,要求百度搜索其他操作系统的相关信息。
如果服务没有自动启动,则需要启动服务:。
先创建队列,再使用队列,队列中的消息,发送一个多一个,接收一个少一个,先进先出。复制代码代码如下:使用系统;使用系统。集合。通用;使用系统Linq .使用系统网络.使用系统网络。用户界面使用系统。网络控件;使用系统。消息传递;//添加物理文件系统。信息发送的引用命名空间testweb{公共分部类MSMQtest :系统.网络。ui。页面{受保护的无效页面_加载(对象发送方,事件参数e){//新建队列(' MsgQueue ');//创建一个消息队列//sendsimplemsg();//每一个队列最好只发送和接收同一种格式的信息,不然不好转换格式。
//receiveSimpleMsg();////receiveSimpleMsg();//SendComplexMSG();//receivecomplexsmsg();msg模型m=receivecomplexsgmmodel();回应write(m . ToString());} private void sendsimplemsg(){//实例化消息队列,并指向现有的一个名称为视频队列队列消息队列MQ=新消息队列(@ '。\ private $ \ MsgQueue’);//MQ .发送('消息测试', '测试消息');系统。消息。消息=新系统。消息。消息();消息。标签='消息"标签";消息正文='消息' body ';MQ .发送(消息);回应。写('成功发送消息,' DateTime .现在是br/');} private void receiveSimpleMsg(){ MessageQueue MQ=new MessageQueue(@).\ private $ \ MsgQueue’);//调用消息队列的接收方法接收消息如果(MQ .GetAllMessages().长度0) {系统。消息。消息=MQ .接收(时间跨度.从秒(5)开始;如果(消息!=null){//消息。格式化程序=新系统消息。XmlMessageFormatter(新字符串[] { '消息.商务。视频路径,消息' });//消息类型转换消息。格式化程序=新系统消息。XmlMessageFormatter(新类型[] { typeof(字符串)});回应写(字符串。格式('接收消息成功,标签为:{0},body:{1},{2}br/',消息。标签,信息身体。ToString(),DateTime .现在));} } else { Response .写('没有消息了!br/');} } private void SendComplexMSG(){//实例化消息队列,并指向现有的一个名称为视频队列队列消息队列MQ=新消息队列(@ '。\ private $ \ MsgQueue’);//MQ .发送('消息测试', '测试消息');系统。消息。消息=新系统。消息。消息();消息。标签='复杂消息"标签";消息正文=新的MSgmmodel(' 1 ','消息1');MQ .发送(消息);回应。写('成功发送消息,' DateTime .现在是br/');} private void receiveComplexMsg(){ MessageQueue MQ=new MessageQueue(@).\ private $ \ MsgQueue’);//调用消息队列的接收方法接收消息如果(MQ .GetAllMessages().长度0) {系统。消息。消息=MQ .接收(时间跨度.从秒(5)开始;如果(消息!=null){ 0消息。格式化程序=新系统消息。XmlMessageFormatter(新类型[]{类型为(msgmmodel)});//消息类型转换msgmmodel msg=(msgmmodel)消息。身体;回应写(字符串。格式('接收消息成功,标签为:{0},body:{1},{2}br/',消息。标签、消息、日期时间。现在));} } else { Response .写('没有消息了!br/');} }私有t receivecomplexsmsgt(){ MessageQueue MQ=new MessageQueue(@ ' .\ private $ \ MsgQueue’);//调用消息队列的接收方法接收消息如果(MQ .GetAllMessages().长度0) {系统。消息。消息=MQ .接收(时间跨度.从秒(5)开始;如果(消息!=null){ 0消息。格式化程序=新系统消息。XmlMessageFormatter(新类型[]{类型为(T)});//消息类型转换T消息=(吨)消息。身体;返回消息;} }返回默认值(T);} ///摘要///创建消息队列////summary ///param name='name '消息队列名称/param/返回/返回public void CreateNewQueue(字符串名称){ if(!系统。消息。消息队列。存在('。\\private$\\' name))//检查是否已经存在同名的消息队列{系统。消息队列mq=系统。消息。消息队列。创建('。\ \ private $ \ '名称);mq .标签='private$\\ '名称;回应。写('创建成功!br/');} else { //System .消息。消息队列。删除('。\ \ private $ \ '名称);//删除一个消息队列回应。写('已经存在br/');} } }[可序列化]公共类MsgModel {公共字符串id { get设置;}公共字符串名称{获取设置;} public msg model(){ } public msg model(string _ id,string _ Name){ id=_ id;名称=_名称;}公共重写字符串ToString() { if (string .IsNullOrEmpty(id) ||字符串IsNullOrEmpty(名称))返回"";返回字符串。格式(' id - {0},名称- {1} ',id,名称);} }}
版权声明:的用法 网络消息队列是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。