赞
踩
RabbitMQ 是一个非常流行的,开源的,使用Erlang语言编写的框架,通常在电信级平台
中作为消息中间件使用,RabbitMQ实现了高级的AMQP协议用于实现进程间,应用程序间,服务器之间的消息交互,你可以使用自定义插件来扩展RabbitMQ的功能,而且它还支持多协议,高性能,高可靠,集群以及高可用队列。
nuget安装rabbitmq.client包
install-package rabbitmq.client
- using RabbitMQ.Client;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
-
- namespace rabbitmqtoinflux
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- IConnectionFactory factory = new ConnectionFactory//创建连接工厂对象
- {
- HostName = "127.0.0.1",//IP地址
- Port = 5672,//端口号
- UserName = "guest",//用户账号
- Password = "guest"//用户密码
- };
- IConnection con = factory.CreateConnection();//创建连接对象
- IModel channel = con.CreateModel();//创建连接会话对象
- string name = "demo";
- //声明一个队列
- channel.QueueDeclare(
- queue: name,//消息队列名称
- durable: false,//是否持久化,true持久化,队列会保存磁盘,服务器重启时可以保证不丢失相关信息。
- exclusive: false,//是否排他,true排他的,如果一个队列声明为排他队列,该队列仅对首次声明它的连接可见,并在连接断开时自动删除.
- autoDelete: false,//是否自动删除。true是自动删除。自动删除的前提是:致少有一个消费者连接到这个队列,之后所有与这个队列连接的消费者都断开时,才会自动删除.
- arguments: null //设置队列的一些其它参数
- );
- string str = string.Empty;
- do
- {
- Console.WriteLine("发送内容:");
- str = Console.ReadLine();
- //消息内容
- byte[] body = Encoding.UTF8.GetBytes(str);
- //发送消息
- channel.BasicPublish("", name, null, body);
- Console.WriteLine("成功发送消息:" + str);
- } while (str.Trim().ToLower() != "exit");
- con.Close();
- channel.Close();
- }
- }
- }
- using RabbitMQ.Client;
- using RabbitMQ.Client.Events;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
-
- namespace rabbitmqConsumer
- {
- internal class Program
- {
- static void Main(string[] args)
- {
- Console.WriteLine("消费者");
- IConnectionFactory factory = new ConnectionFactory//创建连接工厂对象
- {
- HostName = "127.0.0.1",//IP地址
- Port = 5672,//端口号
- UserName = "guest",//用户账号
- Password = "guest"//用户密码
- };
- IConnection conn = factory.CreateConnection();
- IModel channel = conn.CreateModel();
- string name = "demo";
- //声明一个队列
- channel.QueueDeclare(
- queue: name,//消息队列名称
- durable: false,//是否持久化,true持久化,队列会保存磁盘,服务器重启时可以保证不丢失相关信息。
- exclusive: false,//是否排他,true排他的,如果一个队列声明为排他队列,该队列仅对首次声明它的连接可见,并在连接断开时自动删除.
- autoDelete: false,//是否自动删除。true是自动删除。自动删除的前提是:致少有一个消费者连接到这个队列,之后所有与这个队列连接的消费者都断开时,才会自动删除.
- arguments: null //设置队列的一些其它参数
- );
- //创建消费者对象
- var consumer = new EventingBasicConsumer(channel);
- consumer.Received += (model, ea) =>
- {
- byte[] message = ea.Body.ToArray();//接收到的消息
- Console.WriteLine("接收到消息为:" + Encoding.UTF8.GetString(message));
- };
- //消费者开启监听
- channel.BasicConsume(name, true, consumer);
- Console.ReadKey();
- channel.Dispose();
- conn.Close();
- }
-
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。