当前位置:   article > 正文

C# 中调用RabbitMQ_c#读取rabbitmq

c#读取rabbitmq

rabbitmq介绍:

RabbitMQ 是一个非常流行的,开源的,使用Erlang语言编写的框架,通常在电信级平台中作为消息中间件使用,RabbitMQ实现了高级的AMQP协议用于实现进程间,应用程序间,服务器之间的消息交互,你可以使用自定义插件来扩展RabbitMQ的功能,而且它还支持多协议,高性能,高可靠,集群以及高可用队列。

安装依赖:

nuget安装rabbitmq.client包

install-package rabbitmq.client

生产者代码:

  1. using RabbitMQ.Client;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace rabbitmqtoinflux
  8. {
  9. internal class Program
  10. {
  11. static void Main(string[] args)
  12. {
  13. IConnectionFactory factory = new ConnectionFactory//创建连接工厂对象
  14. {
  15. HostName = "127.0.0.1",//IP地址
  16. Port = 5672,//端口号
  17. UserName = "guest",//用户账号
  18. Password = "guest"//用户密码
  19. };
  20. IConnection con = factory.CreateConnection();//创建连接对象
  21. IModel channel = con.CreateModel();//创建连接会话对象
  22. string name = "demo";
  23. //声明一个队列
  24. channel.QueueDeclare(
  25. queue: name,//消息队列名称
  26. durable: false,//是否持久化,true持久化,队列会保存磁盘,服务器重启时可以保证不丢失相关信息。
  27. exclusive: false,//是否排他,true排他的,如果一个队列声明为排他队列,该队列仅对首次声明它的连接可见,并在连接断开时自动删除.
  28. autoDelete: false,//是否自动删除。true是自动删除。自动删除的前提是:致少有一个消费者连接到这个队列,之后所有与这个队列连接的消费者都断开时,才会自动删除.
  29. arguments: null //设置队列的一些其它参数
  30. );
  31. string str = string.Empty;
  32. do
  33. {
  34. Console.WriteLine("发送内容:");
  35. str = Console.ReadLine();
  36. //消息内容
  37. byte[] body = Encoding.UTF8.GetBytes(str);
  38. //发送消息
  39. channel.BasicPublish("", name, null, body);
  40. Console.WriteLine("成功发送消息:" + str);
  41. } while (str.Trim().ToLower() != "exit");
  42. con.Close();
  43. channel.Close();
  44. }
  45. }
  46. }

消费者代码:

  1. using RabbitMQ.Client;
  2. using RabbitMQ.Client.Events;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace rabbitmqConsumer
  9. {
  10. internal class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. Console.WriteLine("消费者");
  15. IConnectionFactory factory = new ConnectionFactory//创建连接工厂对象
  16. {
  17. HostName = "127.0.0.1",//IP地址
  18. Port = 5672,//端口号
  19. UserName = "guest",//用户账号
  20. Password = "guest"//用户密码
  21. };
  22. IConnection conn = factory.CreateConnection();
  23. IModel channel = conn.CreateModel();
  24. string name = "demo";
  25. //声明一个队列
  26. channel.QueueDeclare(
  27. queue: name,//消息队列名称
  28. durable: false,//是否持久化,true持久化,队列会保存磁盘,服务器重启时可以保证不丢失相关信息。
  29. exclusive: false,//是否排他,true排他的,如果一个队列声明为排他队列,该队列仅对首次声明它的连接可见,并在连接断开时自动删除.
  30. autoDelete: false,//是否自动删除。true是自动删除。自动删除的前提是:致少有一个消费者连接到这个队列,之后所有与这个队列连接的消费者都断开时,才会自动删除.
  31. arguments: null //设置队列的一些其它参数
  32. );
  33. //创建消费者对象
  34. var consumer = new EventingBasicConsumer(channel);
  35. consumer.Received += (model, ea) =>
  36. {
  37. byte[] message = ea.Body.ToArray();//接收到的消息
  38. Console.WriteLine("接收到消息为:" + Encoding.UTF8.GetString(message));
  39. };
  40. //消费者开启监听
  41. channel.BasicConsume(name, true, consumer);
  42. Console.ReadKey();
  43. channel.Dispose();
  44. conn.Close();
  45. }
  46. }
  47. }

 

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号