短视频,自媒体,达人种草一站处事
这篇文章首要先容了c# rabbitmq 简朴收动员静的示例代码,文中通过示例代码先容的很是具体,对各人的进修可能事变具有必然的参考进修代价,必要的伴侣们下面跟着小编来一路进修进修吧
宣布动静:(出产者)
/// <summary> /// 发送动静 /// </summary> /// <param>行列名</param> /// <param>动静内容</param> private static void PublishInfo(string queue, string message) { try { var factory = new ConnectionFactory(); factory.HostName = "localhost";//RabbitMQ处事在当地运行 factory.UserName = "guest";//用户名 factory.Password = "guest";//暗码
using (var connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { bool durable = true;//将动静标志为耐久性 channel.QueueDeclare(queue, durable, false, false, null);
IBasicProperties properties = channel.CreateBasicProperties(); properties.DeliveryMode = 2;
var body = Encoding.UTF8.GetBytes(message); channel.BasicPublish("", queue, properties, body); //开始转达
} } } catch (System.Exception ex) { Console.WriteLine(ex.ToString()); } Console.ReadLine(); }
行使:
PublishInfo("test", "222222222222");
要领一:旧版可用
private static void ConsumeInfo(string queue) { try { var factory = new ConnectionFactory(); factory.HostName = "localhost";//RabbitMQ处事在当地运行 factory.UserName = "guest";//用户名 factory.Password = "guest";//暗码
using (var connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { //bool durable = true;//将动静标志为耐久性 //channel.QueueDeclare("sljcgx:finish-queue", durable, false, false, null);//声明行列,行列不存在则建设该行列
//配置prefetchCount : 1来奉告RabbitMQ,在未收到斲丧端的动静确认时,不再分动员静,也就确保了当斲丧端处于繁忙状态时,不再分派使命。 channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false); var consumer = new QueueingBasicConsumer(channel); //false为手动确认,获打动静后必要添加 channel.BasicAck(ea.DeliveryTag, false)确认 //true则为自动确认,不必要这行代码 channel.BasicConsume(queue, false, consumer);
while (true) { try { var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();//阻塞函数,获取行列中的动静 var bodyReceive = ea.Body; string message = Encoding.UTF8.GetString(bodyReceive); Console.WriteLine(message); channel.BasicAck(ea.DeliveryTag, false);// 动静确认信号,确认后该动静将从行列里移除 } catch (System.Exception ex) { Console.WriteLine(ex.Message); } } }
} } catch (System.Exception ex) { Console.WriteLine(ex.ToString()); } Console.ReadLine(); }
要领二:(通用)
private static void ConsumeInfo(string queue) { try { var factory = new ConnectionFactory(); factory.HostName = "localhost";//RabbitMQ处事在当地运行 factory.UserName = "guest";//用户名 factory.Password = "guest";//暗码
using (var connection = factory.CreateConnection()) { using (var channel = connection.CreateModel()) { //bool durable = true;//将动静标志为耐久性 //channel.QueueDeclare("sljcgx:finish-queue", durable, false, false, null);//声明行列,行列不存在则建设该行列
//配置prefetchCount : 1来奉告RabbitMQ,在未收到斲丧端的动静确认时,不再分动员静,也就确保了当斲丧端处于繁忙状态时,不再分派使命。 channel.BasicQos(prefetchSize: 0, prefetchCount: 1, global: false); var consumer = new QueueingBasicConsumer(channel); //false为手动确认,获打动静后必要添加 channel.BasicAck(ea.DeliveryTag, false)确认 //true则为自动确认,不必要这行代码 channel.BasicConsume(queue, false, consumer);
while (true) { try { var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();//阻塞函数,获取行列中的动静 var bodyReceive = ea.Body; string message = Encoding.UTF8.GetString(bodyReceive); Console.WriteLine(message); channel.BasicAck(ea.DeliveryTag, false);// 动静确认信号,确认后该动静将从行列里移除 } catch (System.Exception ex) { Console.WriteLine(ex.Message); } } }
} } catch (System.Exception ex) { Console.WriteLine(ex.ToString()); } Console.ReadLine(); }
到此这篇关于c# rabbitmq 简朴收动员静的示例代码的文章就先容到这了,更多相干c# rabbitmq 收动员静内容请搜刮剧本之家早年的文章或继承赏识下面的相干文章但愿各人往后多多支持剧本之家! (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|