AMQP协议的梳理和名词解析

建议先把上篇AMQP协议先看一遍,理解一下,由于用XMind绘图,电脑屏幕比较小,不能截取全部,如果想要全图和源代码,请下面留言.......

可以点击图片,打开到新的页面查看,文字会清晰一点。。。。。

实例一:生产者-队列-消费者

P(Producer):生产者,意味着发送;

Queue:队列,本质上是一个无限的缓冲区,可以储存尽可能多的信息;

C(Consumer):消费者,等待并接收消息。

代码

简述:三部分,创建连接对象的公共帮助类库,一个发布者,一个消费者

MQConnnection代码单独封装一个类库:::

public class HelpConnection

{

private static IConnection Connection;

public static IConnection GetConnection()

{

if (Connection == null)

{

//创建连接工厂

var factory = new ConnectionFactory()

{

//计算机名称,账号,密码,

HostName = "localhost",

UserName = "zhangguangpo",

Password = "guangpo1992",

RequestedHeartbeat = 60,

AutomaticRecoveryEnabled = true //要启用自动连接恢复

};

//创建连接

Connection = factory.CreateConnection();

return Connection;

}

return Connection;

}

}

发布者:::

///

///案例一::: 生产者--队列--消费者///

///

static void Main(string[] args)

{//创建一个渠道,会话

using (var channel =HelpConnection.GetConnection().CreateModel())

{//参数:队列名称,是否持久,是否独家,自动删除,参数//QueueDeclare(string queue,durable true,exclusive false,autoDelete false, IDictionary arguments);//声明一个队列

channel.QueueDeclare("hello", true, false, false, null);string message = "Hello World 1";var body =Encoding.UTF8.GetBytes(message);

channel.BasicPublish("", "hello", null, body);

Console.WriteLine("发布成功!!!");

Console.ReadKey();

}

}

消费者:::

(1)获取个人消息(“拉API”)要检索单个消息,请使用IModel.BasicGet。

static void Main(string[] args)

{using (var channel =HelpConnection.GetConnection().CreateModel())

{//参数:队列名称,是否持久,是否独家,自动删除,参数//QueueDeclare(string queue,durable true,exclusive false,autoDelete false, IDictionary arguments);//在消费者的类里面为什么会再次声明队列(channel.QueueDeclare())呢?-- 因为接收方可能会在发送方启动前启动,这是出于保险起见。

channel.QueueDeclare("hello", true, false, false, null);#region 获取个人消息(“拉API”)

//要检索单个消息,请使用IModel.BasicGet。返回的值是BasicGetResult的实例,可以从中提取头信息(属性)和消息体://noAck 可理解 是个消息标记,True:消息读取自动排除,下次不会读取到;false 消息没有排除,一直存在,

var result = channel.BasicGet("hello", True);if (result == null)

{

Console.WriteLine("暂时没有消息");

}else{var msg =Encoding.UTF8.GetString(result.Body);

Console.WriteLine(msg);

}//确认收到消息//channel.BasicAck(result.DeliveryTag, false);

#endregionConsole.ReadKey();

}

}

(2)通过订阅检索邮件(“推送API”)

static void Main(string[] args)

{using (var channel =HelpConnection.GetConnection().CreateModel())

{#region 通过订阅检索邮件(“推送API”)

//创建基于该队列的消费者,绑定事件//我们即将告诉服务器将队列中的消息传递给我们。由于它将异步地推送我们的邮件,所以我们提供一个回调。//那就是EventingBasicConsumer.Received事件处理程序。

var consumer = newEventingBasicConsumer(channel);string msg = "";

consumer.Received+= (model, e) =>{var body = e.Body; //消息主体

msg =Encoding.UTF8.GetString(e.Body);

Console.WriteLine("显示消息:" +msg);

};//启动消费者 必须调用 IModel.BasicAck来确认您已成功接收并处理该消息:

channel.BasicConsume(queue: "hello", //队列名

noAck: true, //false:手动应答;true:自动应答

consumer: consumer);#endregionConsole.ReadKey();

}

}

显示效果:一样一样的

博主是利用读书、参考、引用、抄袭、复制和粘贴等多种方式打造成自己的纯镀 24k 文章,请原谅博主成为一个无耻的文档搬运工!

小弟刚迈入博客编写,文中如有不对,欢迎用板砖扶正,希望给你有所帮助。

rabbitmq 消费端代码获取队列名称_RabbitMQ四:生产者--队列--消费者相关推荐

  1. rabbitmq 消费端代码获取队列名称_C#调用RabbitMQ实现消息队列的示例代码

    前言 我在刚接触使用中间件的时候,发现,中间件的使用并不是最难的,反而是中间件的下载,安装,配置才是最难的. 所以,这篇文章我们从头开始学习RabbitMq,真正的从头开始. 关于消息队列 其实消息队 ...

  2. 消费端代码获取队列名称_B端产品要懂的技术

    产品经理日常工作有研究用户需求,对用户行为结果负责,通过使用各种方法以及整合资源,来满足用户需求,形成产品价值,为企业带来预期收益.根据受众用户不同,又分为ToC和ToB两类产品. ToC类的产品是面 ...

  3. RabbitMQ消费端停止问题

    RabbitMQ消费端过段时间会停止消费,为了解决这个问题: 可以在消费端的首页添加计时器进行刷新操作,这样消费端就可以一直工作. <script type="text/javascr ...

  4. python 进程间同步_python之路29 -- 多进程与进程同步(进程锁、信号量、事件)与进程间的通讯(队列和管道、生产者与消费者模型)与进程池...

    所谓异步是不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也立即执行,只要自己完成了整个任务就算完成了.至于被依赖的任务最终是否真正完成,依赖它的任务无法确定,所以它是不可靠 ...

  5. 面试官:说说RabbitMQ 消费端限流、TTL、死信队列

    欢迎关注方志朋的博客,回复"666"获面试宝典 1. 为什么要对消费端限流 假设一个场景,首先,我们 Rabbitmq 服务器积压了有上万条未处理的消息,我们随便打开一个消费者客户 ...

  6. RabbitMQ(七):RabbitMQ 消费端限流、TTL、死信队列是什么?

    消费端限流 1. 为什么要对消费端限流 假设一个场景,首先,我们 Rabbitmq 服务器积压了有上万条未处理的消息,我们随便打开一个消费者客户端,会出现这样情况: 巨量的消息瞬间全部推送过来,但是我 ...

  7. RabbitMQ 消费端限流、TTL、死信队列

    目录 消费端限流 1. 为什么要对消费端限流 2.限流的 api 讲解 3.如何对消费端进行限流 TTL 1.消息的 TTL 2.队列的 TTL 死信队列 实现死信队列步骤 总结 消费端限流 1. 为 ...

  8. Rabbitmq专题:rabbitmq消费端如何做限流?

    文章目录 1. 什么是消费端的限流? 2. 解决方案 3. 代码示例 1. 什么是消费端的限流? 场景:在订单高峰期,rabbitmq上已经堆积了很多消息等待消费,如果没有任何限流措施,贸然启动一个消 ...

  9. 消息中间件--RabbitMQ --- 消费端限流 -- 非常重要

    什么是消费端的·限流? 假设一个场景,首先,我们Rabbitmq服务器有上万条未处理的消息,我们随便打开一个消费者客户端,会出现下面的情况: 巨量的消息瞬间全部推送过来,但是我们单个客户端无法同时处理 ...

最新文章

  1. python教程是什么-python运行环境是什么
  2. linux下启动和关闭网卡命令
  3. 1061: [Noi2008]志愿者招募 - BZOJ
  4. js设置select列表中特定项为选中状态
  5. rnn中文语音识别java_语音识别算法阅读之RNN-T-2018
  6. java smack 例子_java+smack+openfire即时通讯Im(四)
  7. 02_03 JSP内置对象之page
  8. re.split() 根据句子中的序号进行切分
  9. allegro17.4绘制PCB封装-R0603
  10. java 绘制点阵_[Java基础知识]点阵字库在JAVA中的实现
  11. 新能源汽车电池健康状态及能耗分析
  12. 做好震荡筑底打持久战的准备
  13. TouchSlop与VelocityTracker认识
  14. uniapp、uniCloud实现微信公众号自动查询淘宝京东优惠券制作过程
  15. java-net-php-python-java作业批改系统的设计PPT计算机毕业设计程序
  16. Excel如何从单元格中提取中文汉字
  17. 圣诞节蓝牙耳机选哪款作为礼物比较好?耐用的蓝牙耳机推荐
  18. html help文档制作,HTML Help Workshop(文件制作工具)
  19. 【远程文件浏览器】Unity+Lua开发调试利器
  20. 怎样快速对二进制和十进制进行互转化——IP地址规划与设计总结

热门文章

  1. java 套接字 访问tcp_Java 网络编程(五) 使用TCP/IP的套接字(Socket)进行通信
  2. 获取当前日期是本年的第几周java与mysql获取值不一致
  3. ftp ---- 虚拟用户登录(实例配置)
  4. 计算机二级考试题有之前的吗,国家计算机二级上机做对前两题为什么过不了
  5. sqlserver varchar 对于 sum 运算符无效_在sqlserver上实现自定义函数四舍六入五成双...
  6. Linux下安装golang
  7. Linux压缩文件与解压文件(*.zip)
  8. oracle备份出现问题,TSM + Oracle备份出现问题
  9. php二叉树层序遍历 带层数和不带层数 需要用到队列
  10. (12)自定义数据流(实战Docker事件推送的REST API)——响应式Spring的道法术器...