您的位置:首页 > 其它

.NET消息队列(存档)

2009-05-12 23:47 134 查看
.Net消息队列学习(一)
下面的示例只是涉及到构建发送者,发送复杂消息等操作。这里的复杂消息包括两种,一种是作者自己封装的一个类,获取对话框中的几个文本对话框的值。第二种是Net中自带的类Message,t填充他的几个属性,代码如下:



private System.Messaging.Message setMessage()






{


System.Messaging.Message msg=new System.Messaging.Message();


msg.Label="A message lable";


msg.Body="The message body";


msg.TimeToBeReceived=TimeSpan.FromSeconds(4000);


msg.UseDeadLetterQueue=true;


return msg;


}




private void button1_Click(object sender, System.EventArgs e)






{


MessageQueue mq;




SendForm form=new SendForm();




if(!MessageQueue.Exists(@"./private$/chelei"))






{


try






{


mq=MessageQueue.Create(@"./private$/chelei");


form.Name=this.txtname.Text;


form.Sex=this.txtsex.Text;


form.Email=this.txtemail.Text;


form.Address=this.txtaddress.Text;


mq.Send(form,"信息");


mq.Close();


MessageQueue.Delete(@"./private$/chenlei");




}


catch(Exception ex)






{


MessageBox.Show(ex.Message,"Warning!");






//


}


}


else






{


try






{


mq=new MessageQueue(@"./private$/chenlei");


form.Name=this.txtname.Text;


form.Sex=this.txtsex.Text;


form.Email=this.txtemail.Text;


form.Address=this.txtaddress.Text;


mq.Send(form,"信息");


mq.Close();


MessageQueue.Delete(@"./private$/chenlei");


}


catch(Exception ex)






{


MessageBox.Show(ex.Message,"Warning!");




}






}








}




private void button1_Click_1(object sender, System.EventArgs e)






{


try






{


MessageQueue mq;


if(MessageQueue.Exists(@"./private$/aa"))






{


mq=new MessageQueue(@"./private$/aa");


mq.Send(this.setMessage());




}


else






{


mq=MessageQueue.Create(@"./private$/aa");


mq.Send(this.setMessage());


}


mq.Close();


MessageQueue.Delete(@"./private$/aa");


}


catch(Exception ex)






{


MessageBox.Show(ex.Message,"Warning!");


}


}




}
说明:
1、通过设置TimeToBeReceived属性,这个消息可以在目标队列中保存20秒。
如果没有在20秒内从这个队列中读取他,队列就会删除这条消息。
设置UseDeadLetter属性为true可以通知MSMQ在把它从目标队列中删除之前,把消息复制到"Dead-letter messages"系统队列中
2、只有在发送消息的计算机在域模式下运行MSMQ时,才可以使用简单路径引用网络上的公共消息队列
私有队列路径表示:./private$/aa
公共队列路径表示:./aa
3、具体的SendForm类如下:


public class SendForm






{




private string m_Name;


private string m_Sex;


private string m_Email;


private string m_Address;


public SendForm()






{


//


// TODO: 在此处添加构造函数逻辑


//


}


public SendForm(string name,string sex,string email,string address)






{


this.m_Name=name;


this.m_Sex=sex;


this.m_Email=email;


this.m_Address=address;




}


public string Name






{


get






{


return this.m_Name;


}


set






{


this.m_Name=value;


}


}


public string Sex






{


get






{


return this.m_Sex;


}


set






{


this.m_Sex=value;


}


}


public string Email






{


get






{


return this.m_Email;


}


set






{


this.m_Email=value;


}


}


public string Address






{


get






{


return this.m_Address;


}


set






{


this.m_Address=value;


}


}


}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: