这个工具可以用于测试常见的MQ操作,例如发送消息、接收消息、查看队列状态等。我们将使用.NET的System.Messaging
命名空间来操作本地或远程的消息队列。
我们将创建一个控制台应用程序来实现这些功能。以下是完整的代码:
using System;
using System.Messaging;
namespace MQTestTool
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("MQ Test Tool");
Console.WriteLine("1. Create Queue");
Console.WriteLine("2. Delete Queue");
Console.WriteLine("3. Send Message");
Console.WriteLine("4. Receive Message");
Console.WriteLine("5. Get Queue Message Count");
Console.WriteLine("6. Clear Queue");
Console.WriteLine("0. Exit");
while (true)
{
Console.Write("Enter your choice: ");
if (!int.TryParse(Console.ReadLine(), out int choice))
{
Console.WriteLine("Invalid input. Please try again.");
continue;
}
switch (choice)
{
case 1:
CreateQueue();
break;
case 2:
DeleteQueue();
break;
case 3:
SendMessage();
break;
case 4:
ReceiveMessage();
break;
case 5:
GetMessageCount();
break;
case 6:
ClearQueue();
break;
case 0:
Console.WriteLine("Exiting...");
return;
default:
Console.WriteLine("Invalid choice. Please try again.");
break;
}
}
}
static void CreateQueue()
{
Console.Write("Enter Queue Path (e.g., .\\private$\\testQueue): ");
string queuePath = Console.ReadLine();
if (!MessageQueue.Exists(queuePath))
{
MessageQueue.Create(queuePath);
Console.WriteLine($"Queue created at {queuePath}");
}
else
{
Console.WriteLine("Queue already exists.");
}
}
static void DeleteQueue()
{
Console.Write("Enter Queue Path (e.g., .\\private$\\testQueue): ");
string queuePath = Console.ReadLine();
if (MessageQueue.Exists(queuePath))
{
MessageQueue.Delete(queuePath);
Console.WriteLine($"Queue deleted at {queuePath}");
}
else
{
Console.WriteLine("Queue does not exist.");
}
}
static void SendMessage()
{
Console.Write("Enter Queue Path (e.g., .\\private$\\testQueue): ");
string queuePath = Console.ReadLine();
Console.Write("Enter Message: ");
string message = Console.ReadLine();
using (MessageQueue queue = new MessageQueue(queuePath))
{
queue.Send(message);
Console.WriteLine("Message sent successfully.");
}
}
static void ReceiveMessage()
{
Console.Write("Enter Queue Path (e.g., .\\private$\\testQueue): ");
string queuePath = Console.ReadLine();
using (MessageQueue queue = new MessageQueue(queuePath))
{
if (queue.GetAllMessages().Length > 0)
{
Message receivedMessage = queue.Receive();
Console.WriteLine($"Received Message: {receivedMessage.Body}");
}
else
{
Console.WriteLine("No messages in the queue.");
}
}
}
static void GetMessageCount()
{
Console.Write("Enter Queue Path (e.g., .\\private$\\testQueue): ");
string queuePath = Console.ReadLine();
using (MessageQueue queue = new MessageQueue(queuePath))
{
int messageCount = queue.GetAllMessages().Length;
Console.WriteLine($"Message Count: {messageCount}");
}
}
static void ClearQueue()
{
Console.Write("Enter Queue Path (e.g., .\\private$\\testQueue): ");
string queuePath = Console.ReadLine();
using (MessageQueue queue = new MessageQueue(queuePath))
{
queue.Purge();
Console.WriteLine("Queue cleared successfully.");
}
}
}
}
.\\private$\\testQueue
)。运行程序后,用户可以通过控制台菜单选择操作,例如:
复制
MQ Test Tool
1. Create Queue
2. Delete Queue
3. Send Message
4. Receive Message
5. Get Queue Message Count
6. Clear Queue
0. Exit
Enter your choice: 1
Enter Queue Path (e.g., .\private$\testQueue): .\private$\testQueue
Queue created at .\private$\testQueue
这个工具是一个简单的MQ测试工具,可以根据实际需求进一步扩展功能,例如支持持久化消息、支持远程队列等。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。