摘要

Message Queue消息队列,简称MQ,是一种应用程序对应用程序的通信方法,应用程序通过读写出入队列的消息来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此通信。

MQ是消费-生产者模型的一个典型代表,一端往消息队列中不断写入消息,而另一端则可以读取或者订阅队列中的消息。

安装

官网地址:http://www.rabbitmq.com/download.html。

下载后,需要安装RabbitMQ服务。如果没有Erlang环境会弹出下面的提示:

下载Erlang环境并安装

地址:http://www.erlang.org/downloads

然后安装RabbitMQ,安装成功后会在服务中看到该服务。

一个例子

新建一个控制台应用程序,并使用Nuget引入RabbitMQ

代码如下:

当type等于1时,客户端为生产者,2时为消费者

    /// <summary>/// RabbitMQ/// </summary>class Program{static void Main(string[] args){string type = Console.ReadLine();//生产者if (type=="1"){ConnectionFactory factory = new ConnectionFactory();factory.HostName = "127.0.0.1";//默认端口factory.Port = 5672;using (IConnection conn = factory.CreateConnection()){using (IModel channel = conn.CreateModel()){//在MQ上定义一个持久化队列,如果名称相同不会重复创建channel.QueueDeclare("MyRabbitMQ", true, false, false, null);while (true){string message = string.Format("Message_{0}", Console.ReadLine());byte[] buffer = Encoding.UTF8.GetBytes(message);IBasicProperties properties = channel.CreateBasicProperties();properties.DeliveryMode = 2;channel.BasicPublish("", "MyRabbitMQ", properties, buffer);Console.WriteLine("消息发送成功:" + message);}}}}else{//消费者ConnectionFactory factory = new ConnectionFactory();factory.HostName = "127.0.0.1";//默认端口factory.Port = 5672;using (IConnection conn = factory.CreateConnection()){using (IModel channel = conn.CreateModel()){//在MQ上定义一个持久化队列,如果名称相同不会重复创建channel.QueueDeclare("MyRabbitMQ", true, false, false, null);//输入1,那如果接收一个消息,但是没有应答,则客户端不会收到下一个消息channel.BasicQos(0, 1, false);Console.WriteLine("Listening...");//在队列上定义一个消费者QueueingBasicConsumer consumer = new QueueingBasicConsumer(channel);//消费队列,并设置应答模式为程序主动应答channel.BasicConsume("MyRabbitMQ", false, consumer);while (true){//阻塞函数,获取队列中的消息BasicDeliverEventArgs ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue();byte[] bytes = ea.Body;string str = Encoding.UTF8.GetString(bytes);Console.WriteLine("队列消息:" + str.ToString());//回复确认channel.BasicAck(ea.DeliveryTag, false);}}}}}}

测试

启动生产者

启动消费者

使用生产者入队,1,2,3,4,5,6,7,8

消费者

参考文章

http://www.cnblogs.com/qy1141/p/4054135.html?utm_source=tuicool&utm_medium=referral

[c#]RabbitMQ的简单使用相关推荐

  1. 基于消息中间件RabbitMQ实现简单的RPC服务

    转载自  基于消息中间件RabbitMQ实现简单的RPC服务 RPC(Remote Procedure Call,远程过程调用),是一种计算机通信协议.对于两台机器而言,就是A服务器上的应用程序调用B ...

  2. docker安装rabbitmq及简单管理

    docker安装rabbitmq及简单管理 rabbitmq镜像下载与安装 1.docker search rabbitmq 命令说明:从docker仓库搜索rabbitmq的镜像,类似maven的中 ...

  3. RabbitMq之简单队列

    这里写了一个简单的springboot的demo来处理RabbitMq的简单队列 记录一下步骤. 添加pom依赖 <dependency><groupId>com.rabbit ...

  4. python对RabbitMQ的简单使用

    python对RabbitMQ的简单使用 (一)RabbitMQ的简介 (二)RabbitMQ的安装 (三)python操作RabbitMQ (四)RabbitMQ简单模式 (五)RabbitMQ发布 ...

  5. 初探RabbitMQ与简单实现

    RabbitMQ 简介: RabbitMQ是一个由Erlang语言开发的AMQP的开源实现,高级消息队列协议即Advanced Message Queuing Protocal,是应用层协议的一个开放 ...

  6. RabbitMQ的简单使用

    一.认识MQ 1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应. 异步通讯:就像发邮件,不需要马上回复. 两种方式各有优劣,打电话可以立即得到响应,但是你却不 ...

  7. Docker安装RabbitMQ以及简单使用

    写在前面 为什么选择RabbitMQ? 市场上消息队列的组件有很多,ActiveMQ.RabbitMQ.RocketMQ.kafka等.这里我只是选择其中一种消息队列进行学习,毕竟菜鸡要长得肥一点才好 ...

  8. RabbitMQ一个简单可靠的方案(.Net Core实现)

    前言 最近需要使用到消息队列相关技术,于是重新接触RabbitMQ.其中遇到了不少可靠性方面的问题,归纳了一下,大概有以下几种: 1. 临时异常,如数据库网络闪断.http请求临时失效等: 2. 时序 ...

  9. RabbitMQ的简单示例

    首先导入jar包 RabbitMQ示例图示 其中P代表生产者.C表示消费者.中间红色部分代表消息队列 生产者代码如下: package com.rabbit; import java.io.IOExc ...

最新文章

  1. [原]SSL 开发简述(Delphi)
  2. mysql查询指定日期
  3. core控制器属性注入的用处_了解ASP.NET Core 依赖注入,看这篇就够了
  4. php调用API支付接口(转自刘68)
  5. 基础算法 —— 高精度计算 —— Java 大数类
  6. 9款WordPress视频插件
  7. notepad批量删除html元素,Notepad++几个常用删除类正则表达式汇总(收藏)
  8. git的创建分支与合并分支(5)
  9. 神经网络动态可视化工具
  10. 8-BIT OPTIMIZERS VIA BLOCK-WISE QUANTIZATION--通过块级量化的8位优化器
  11. 如何使用cmd查看jdk版本
  12. 如何判断一个网页是否更新
  13. 印刷电路板(PCB)基础
  14. 跪求C-MAPSS下载
  15. 屌丝变身海归精英?揭秘芝麻信用分黑色产业链
  16. 微信双开/微信多开 程序
  17. ZA7783是一颗将单路MIPI DSI信号转换成单路LVDS/TTL信号的转接芯片
  18. 从vc6.0转到vs2005 2008等出现的错误详解(HYD整理)
  19. 浏览器网页视频怎么快速下载到本地?
  20. rust军用船指令_给Rust实现一个简单的stackful generator(中)上下文切换

热门文章

  1. No module named 'pandads'
  2. Eclipse新建Maven项目web.xml is missing and failOnMissingWebXml is set to true错误 pox.xml编译错误
  3. XCode上传成功后,商店里构建版本显示正在处理中
  4. flutter 实现不可滚动的ListView构建器
  5. 豆瓣评分 9.1,揭秘乔布斯如何成为最伟大的产品经理?
  6. 【重磅】神策分析 1.13 版本上线 ,持续深耕打造场景化数据分析
  7. Gif(2)-加载视图-波纹
  8. [NOI2014]动物园 【kmp】
  9. 原码、补码、反码详解
  10. 部署WAR包实时查看Tomcat的状态和日志