安装

1.进入rabbitMQ官网下载安装包

2.点击安装包安装的时候会提示需要先装erlang

点击是会自动跳转到erlang的下载界面如果没有跳转可以直接点击这里下载,根据系统选择下载包

下载完之后双击exe安装包进行安装,一直下一步就行了(如果不想装在c盘那就改一下盘符)

3.装完了erlang,回去找到刚才第一步下载的rabbitMQ的安装包双击安装,一样的一直下一步就行了(中间遇到需要给它网络点确定就可以了)

4.以上步骤完成了rabbitMQ服务的安装,为了方便操作和管理下面我们安装可视化管理界面

4.1打开cmd界面进入rabbitMQ的安装目录下的sbin目录

  

4.2根据官网步骤执行命令rabbitmq-plugins enable rabbitmq_management

  

4.3安装成功找到安装目录找到rabbitmq-server.bat双击运行(如果有错就右键以管理员身份运行)出现如下界面

4.4打开浏览器访问http://localhost:15672/

4.5默认用户和密码都是guest直接登录看下结果


代码实现

1,创建demo生产者控制台项目

2,通过nuget安装RabbitMQ.Client

3,在主函数Main里面写生产者代码这里先生产5条消息只是简单的demo(特别提醒代码里的端口号是5672不是进入管理地址的15672)

string hostName = "192.168.50.176";
int port = ;//默认端口5672;前端界面的端口是15672特别注意不要混淆
string userName = "wyb";
string password = "";
string virtualHost = "/"; //创建一个连接工厂
var factory = new ConnectionFactory();
factory.UserName = userName;
factory.Password = password;
factory.HostName = hostName;
factory.Port = port;
factory.VirtualHost = virtualHost;
//创建一个连接,此时可以在rabbitmq后台Web管理页面中的Connections中看到一个连接生成
//一个连接可以创建多个通道
var connection = factory.CreateConnection(); string queueName = "q1";//队列名称 //创建一个通道
//此时可以在rabbitmq后台Web管理页面中的Channels中看到一个新通道生成
var channel = connection.CreateModel();
//给通道绑定一个队列,队列如果不存在,则会创建新队列,如果队列已存在,那么参数一定要正确,特别是arguments参数,否则会报错
var arguments = new Dictionary<string, object>() { { "x-queue-type", "classic" } };
channel.QueueDeclare(queue: queueName, durable: true, exclusive: false, autoDelete: false, arguments: arguments); //发布5条消息
for (var i = ; i < ; i++)
{
var buffer = Encoding.UTF8.GetBytes(i.ToString());
channel.BasicPublish("", queueName, null, buffer);
Console.WriteLine("发布消息:"+i);
}
channel.Close(); Console.ReadKey();

4,f5运行项目看到如下结果就表示成功

5,同生产者项目一样的步骤创建一下消费者控制台项目(一样nuget安装RabbitMQ.Client)

6,在消费者项目的main函数里写消费者的代码

string hostName = "192.168.50.176";
int port = ;//默认端口5672;前端界面的端口是15672特别注意不要混淆
string userName = "wyb";
string password = "";
string virtualHost = "/"; //创建一个连接工厂
var factory = new ConnectionFactory();
factory.UserName = userName;
factory.Password = password;
factory.HostName = hostName;
factory.Port = port;
factory.VirtualHost = virtualHost;
//创建一个连接,此时可以在rabbitmq后台Web管理页面中的Connections中看到一个连接生成
//一个连接可以创建多个通道
var connection = factory.CreateConnection(); string queue = "q1";//队列名称 //创建一个通道
//此时可以在rabbitmq后台Web管理页面中的Channels中看到一个新通道生成
var channel = connection.CreateModel();
//给通道绑定一个队列,队列如果不存在,则会创建新队列,如果队列已存在,那么参数一定要正确,特别是arguments参数,否则会报错
var arguments = new Dictionary<string, object>() { { "x-queue-type", "classic" } };
channel.QueueDeclare(queue: queue, durable: true, exclusive: false, autoDelete: false, arguments: arguments);
//channel.BasicQos(2, 2, false);//设置QOS //在通道中定义一个事件消费者
EventingBasicConsumer consumer = new EventingBasicConsumer(channel);
consumer.Received += (sender, e) =>
{
var body = e.Body.Span;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine($"接收到消息:{message}"); Thread.Sleep();//暂停一下 //通知消息已被处理,如果没有,那么消息将会被重复消费
channel.BasicAck(e.DeliveryTag, false);
};
//ack设置成false,表示不自动提交,那么就需要在消息被消费后,手动调用BasicAck去提交消息
channel.BasicConsume(queue, false, consumer); Console.ReadKey();

7运行消费者项目结果如下

结束

简单操作到此,后面再介绍实际应用

最新文章

  1. JAVA内存管理
  2. mysql状态查看 QPS/TPS/缓存命中率查看
  3. .Net平台下的B/S开发框架
  4. ListView复用和优化详解
  5. Asp.net MVC学习--默认程序结构、工作流程
  6. hive metastore Server 出现异常
  7. 百度的js日历
  8. nginx平滑升级(1.14--1.15)
  9. Git 配置用户名、密码
  10. 图像之王ImageMagick
  11. jenkins+mail邮件配置
  12. rt-thread之串口设备的配置流程
  13. 递归查询区域信息及子区域到advTree
  14. html标签一
  15. Thymeleaf学习记录(6)--迭代及条件语法
  16. 集合栈计算机 (The SetStack Computer,ACM/ICPC NWERC 2006,UVa12096
  17. 【python】-- Ajax
  18. 什么是IIS并发连接数
  19. 【Hadoop】Hadoop MR Job工作流引擎
  20. Have启动报错:java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

热门文章

  1. [CF1216E] Numerical Sequence hard version
  2. 微信开发_Exception_02_&quot;errcode&quot;:40164,&quot;errmsg&quot;:&quot;invalid ip 61.172.68.219, not in whitelist hint
  3. 内存疯狂换页!CPU怒批操作系统
  4. JVM源码分析之JVM启动流程
  5. Spring Boot -- 启动流程分析之ApplicationContext 中
  6. 怎么给tbody加滚动条?通过css样式给表格tbody加垂直滚动条
  7. CountDownLatch 线程工具类
  8. 怎么查看HBase表的创建时间
  9. 1-The next outbreak we&#39;re not ready
  10. python 爬虫由于网络或代理不能用导致的问题处理方法