📄 program.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using System.Messaging;
namespace MSMQ.Trans
{
class Program
{
static void Main(string[] args)
{
Createqueue(".\\myQueueTrans");
SendMessage();
ReceiveMessage();
}
/// <summary>
/// 通过Create方法创建使用指定路径的新消息队列
/// </summary>
/// <param name="queuePath"></param>
public static void Createqueue(string queuePath)
{
try
{
if (!MessageQueue.Exists(queuePath))
{
MessageQueue.Create(@".\private$\myQueueTrans", true);
}
else
{
Console.WriteLine(queuePath + "已经存在!");
}
}
catch (MessageQueueException e)
{
Console.WriteLine(e.Message);
}
}
/// <summary>
/// 连接消息队列并发送消息到队列
/// </summary>
public static void SendMessage()
{
try
{
//连接到本地的队列
MessageQueue myQueue = new MessageQueue(".\\private$\\myQueueTrans");
Message myMessage = new Message();
myMessage.Body = "消息内容";
myMessage.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
MessageQueueTransaction myTransaction = new MessageQueueTransaction();
//启动事务
myTransaction.Begin();
//发送消息到队列中
myQueue.Send(myMessage, myTransaction);
//提交事务
myTransaction.Commit();
Console.WriteLine("消息发送成功!");
}
catch (ArgumentException e)
{
Console.WriteLine(e.Message);
}
}
/// <summary>
/// 连接消息队列并从队列中接收消息
/// </summary>
public static void ReceiveMessage()
{
//连接到本地队列
MessageQueue myQueue = new MessageQueue(".\\private$\\myQueueTrans");
myQueue.Formatter = new XmlMessageFormatter(new Type[] { typeof(string) });
try
{
if (myQueue.Transactional)
{
MessageQueueTransaction myTransaction = new MessageQueueTransaction();
//启动事务
myTransaction.Begin();
//从队列中接收消息
Message myMessage = myQueue.Receive(myTransaction);
string context = myMessage.Body as string; //获取消息的内容
myTransaction.Commit();
Console.WriteLine("消息内容为:" + context);
}
}
catch (MessageQueueException e)
{
Console.WriteLine(e.Message);
}
catch (InvalidCastException e)
{
Console.WriteLine(e.Message);
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -