吾爱技术分享-c# rabbitmq 简单收发消息的示例代码

吾爱分享编注:

 

这篇文章主要介绍了c# rabbitmq 简单收发消息的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

发布消息:(生产者)

   /// <summary>
    /// 发送消息
    /// </summary>
    /// <param name=”queue”>队列名</param>
    /// <param name=”message”>消息内容</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);
更多高质量站长资源下载,请收藏吾爱分享者资源,地址:https://52sharew.cn/

            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”);

c# rabbitmq 简单收发消息的示例代码

方法一:旧版可用

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 收发消息内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

源自:https://www.jb51.net/article/193620.htm

更多高质量站长资源下载,请收藏吾爱分享者资源,地址:https://52sharew.cn/

免责声明:本资源来源于互联网,安全性未知,使用前请自行甄别;本资源来源于互联网,如有侵权请及时联系我们,我们将在72小时内删除侵权内容;本资源存储在云盘,如发现链接失效,请 点此反馈 我们会第一时间更新。
吾爱分享者资源 » 吾爱技术分享-c# rabbitmq 简单收发消息的示例代码

发表评论