[c#]RabbitMQ的简单使用
摘要
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的简单使用相关推荐
- 基于消息中间件RabbitMQ实现简单的RPC服务
转载自 基于消息中间件RabbitMQ实现简单的RPC服务 RPC(Remote Procedure Call,远程过程调用),是一种计算机通信协议.对于两台机器而言,就是A服务器上的应用程序调用B ...
- docker安装rabbitmq及简单管理
docker安装rabbitmq及简单管理 rabbitmq镜像下载与安装 1.docker search rabbitmq 命令说明:从docker仓库搜索rabbitmq的镜像,类似maven的中 ...
- RabbitMq之简单队列
这里写了一个简单的springboot的demo来处理RabbitMq的简单队列 记录一下步骤. 添加pom依赖 <dependency><groupId>com.rabbit ...
- python对RabbitMQ的简单使用
python对RabbitMQ的简单使用 (一)RabbitMQ的简介 (二)RabbitMQ的安装 (三)python操作RabbitMQ (四)RabbitMQ简单模式 (五)RabbitMQ发布 ...
- 初探RabbitMQ与简单实现
RabbitMQ 简介: RabbitMQ是一个由Erlang语言开发的AMQP的开源实现,高级消息队列协议即Advanced Message Queuing Protocal,是应用层协议的一个开放 ...
- RabbitMQ的简单使用
一.认识MQ 1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应. 异步通讯:就像发邮件,不需要马上回复. 两种方式各有优劣,打电话可以立即得到响应,但是你却不 ...
- Docker安装RabbitMQ以及简单使用
写在前面 为什么选择RabbitMQ? 市场上消息队列的组件有很多,ActiveMQ.RabbitMQ.RocketMQ.kafka等.这里我只是选择其中一种消息队列进行学习,毕竟菜鸡要长得肥一点才好 ...
- RabbitMQ一个简单可靠的方案(.Net Core实现)
前言 最近需要使用到消息队列相关技术,于是重新接触RabbitMQ.其中遇到了不少可靠性方面的问题,归纳了一下,大概有以下几种: 1. 临时异常,如数据库网络闪断.http请求临时失效等: 2. 时序 ...
- RabbitMQ的简单示例
首先导入jar包 RabbitMQ示例图示 其中P代表生产者.C表示消费者.中间红色部分代表消息队列 生产者代码如下: package com.rabbit; import java.io.IOExc ...
最新文章
- [原]SSL 开发简述(Delphi)
- mysql查询指定日期
- core控制器属性注入的用处_了解ASP.NET Core 依赖注入,看这篇就够了
- php调用API支付接口(转自刘68)
- 基础算法 —— 高精度计算 —— Java 大数类
- 9款WordPress视频插件
- notepad批量删除html元素,Notepad++几个常用删除类正则表达式汇总(收藏)
- git的创建分支与合并分支(5)
- 神经网络动态可视化工具
- 8-BIT OPTIMIZERS VIA BLOCK-WISE QUANTIZATION--通过块级量化的8位优化器
- 如何使用cmd查看jdk版本
- 如何判断一个网页是否更新
- 印刷电路板(PCB)基础
- 跪求C-MAPSS下载
- 屌丝变身海归精英?揭秘芝麻信用分黑色产业链
- 微信双开/微信多开 程序
- ZA7783是一颗将单路MIPI DSI信号转换成单路LVDS/TTL信号的转接芯片
- 从vc6.0转到vs2005 2008等出现的错误详解(HYD整理)
- 浏览器网页视频怎么快速下载到本地?
- rust军用船指令_给Rust实现一个简单的stackful generator(中)上下文切换
热门文章
- No module named 'pandads'
- Eclipse新建Maven项目web.xml is missing and failOnMissingWebXml is set to true错误 pox.xml编译错误
- XCode上传成功后,商店里构建版本显示正在处理中
- flutter 实现不可滚动的ListView构建器
- 豆瓣评分 9.1,揭秘乔布斯如何成为最伟大的产品经理?
- 【重磅】神策分析 1.13 版本上线 ,持续深耕打造场景化数据分析
- Gif(2)-加载视图-波纹
- [NOI2014]动物园 【kmp】
- 原码、补码、反码详解
- 部署WAR包实时查看Tomcat的状态和日志