RabbitMQ 发送消息和接收消息demo
RabbitMQ 发送消息和接收消息demo
class Program
{
static void SendMsgToMQ()
{
string MonitorIp = "10.x.x.x";
int Port = 5674;
string User = "orm";
string Password = "123456";
string MonitorSendExchangName = "testSendExchange2";
string MonitorSendQueueName = "testSendQueue";
string MonitorSendServerId = "server_name";
string sendMsg = "666";
MQProxyExchangeMonitor monitorSendServerProxy = new MQProxyExchangeMonitor(MonitorIp, Port, User, Password);
monitorSendServerProxy.ExchangeDeclare(MonitorSendExchangName, ExchangeType.topic);
for(int i=0;i<0;i++)
{
sendMsg = "666";
sendMsg += i.ToString();
monitorSendServerProxy.MessageSend(System.Text.Encoding.Default.GetBytes(sendMsg), MonitorSendExchangName, MonitorSendServerId);
Thread.Sleep(3000);
}
}
static void RecvMsgFromMQ()
{
string MonitorIp = "10.x.x.x";
int Port = 5674;
string Port2 = "";
string User = "orm";
string Password = "123456";
string MonitorReceiveExchangName = "testSendExchange";
//string MonitorRecvServerId = "server_name";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Environment.CurrentDirectory + @"\RabbitMQ_Config.xml");
XmlElement rootx = xmlDoc.DocumentElement;
//挨个查找其下的子节点
foreach (XmlElement childElement in rootx)
{
//分别输出子节点属性
if (childElement.OuterXml.Contains("MonitorIp"))
{
MonitorIp = childElement.GetAttribute("MonitorIp");
}
else if (childElement.OuterXml.Contains("Port"))
{
Port =int.Parse(childElement.GetAttribute("Port"));
}
else if (childElement.OuterXml.Contains("User"))
{
User = childElement.GetAttribute("User");
}
else if (childElement.OuterXml.Contains("Password"))
{
Password = childElement.GetAttribute("Password");
}
else if (childElement.OuterXml.Contains("MonitorReceiveExchangName"))
{
MonitorReceiveExchangName = childElement.GetAttribute("MonitorReceiveExchangName");
}
}
List<string> MonitorReceiveServerIds = new List<string>();
MonitorReceiveServerIds.Add("server_name");
MQProxyExchangeMonitor monitorReceiveServerProxy = new MQProxyExchangeMonitor(MonitorIp, Port, User, Password);
monitorReceiveServerProxy.ExchangeDeclare(MonitorReceiveExchangName, ExchangeType.topic);
monitorReceiveServerProxy.ExchangeMonitor(MonitorReceiveExchangName, MonitorReceiveServerIds);
monitorReceiveServerProxy.DataReceiveEvent += MonitorDataReceiveEventHandler;
}
static void MonitorDataReceiveEventHandler(DataReceiveEventArgs args)
{
Encoding utf8 = Encoding.UTF8;
string result = utf8.GetString(args.body);
UserOperationModel model2 = JsonConvert.DeserializeObject<UserOperationModel>(result);
Console.WriteLine($"body:{System.Text.Encoding.Default.GetString(args.body)} queuename:{args.queueName} exchange:{args.exchange} routingkey:{args.routingKey}");
}
static void Main(string[] args)
{
Task.Factory.StartNew(() =>
{
try
{
//SendMsgToMQ();
}
catch (Exception ex)
{
Console.WriteLine($"call SendMsgToMQ exception : {ex}");
}
});
RecvMsgFromMQ();
Console.ReadKey();
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!