作家
登录

如何优雅的使用RabbitMQ

作者: 来源: 2017-07-26 14:15:32 阅读 我要评论

); 
  •          Console.ReadLine(); 
  •      } 
  •  } 
  • 该段代码可以懂得为:创建信道->创建队列->定义回调函数->花费消息。

    该实例描述了Send/Receive模式,可以简单懂得为1(producer) VS 1(consumer)的场景;

    1(producer) VS 1(consumer)

    1(producer) VS 多个(consumer)

    在以上两个示例中,producer只须要发送消息即可,并不关怀consumer的返回结不雅。实例6则描述了一个RPC调用处景,producer发送消息后还要接收consumer的返回结不雅,这一场景看起来跟应用消息队列的目标有点相悖。因为应用消息队列的目标之一就是要异步,然则这一场景似乎又将异步变成了同步,不过这一场景也很有效,比如一个用户操作产生了一个消息,应用办事收到该消息后履行了一些逻辑并使得数据库产生了变更,UI会一向等待应用办事的返回结不雅冲刷新页面。

    返回结不雅

    无法对消息的各个状况做追踪;

    我桌子上放着一本RabbitMQ in Action,别的官网供给的文档也很具体,我感到在一个月内我就能精晓RabbitMQ,到时刻简历上又可以写上“精晓…”,感到有点小自得呢... ,然则我知道这并不是应用RabbitMQ的最佳方法。

    我们知道合理的抽象可以帮我们隐蔽掉落一些技巧细节,让我们将重心放在核心营业上,比如一小我问你:“大年夜雁塔若何走?”你的答复可能是“小寨往东,一向走两站,右手边”,如不雅你答复:“右转45度,向前走100米,再转90度…”,对方就会迷掉在这些细节中。

    消息队列的应用过程中实际隐蔽着一种抽象——办事总线(Service Bus)。

    我们在回头看第一个例子,这个例子隐含的营业是:ClientA发送一个指令,ClientB收到该指令后做出反竽暌功。如不雅是如许,我们为什么要关怀若何创建channel,若何创建一个queue? 我仅仅是要发送一个消息罢了。别的┞封个例子写的其实不敷结实:

    没有重试机制:如不雅ClientB第一次没有履行成功若何对该消息处理?

    没出缺点处理机制:如不雅ClientB在重试了N次之后照样异常若何处理该消息?

    实例3则描述了Publish/Subscriber模式,即1(producer) VS 多个(consumer);

    没有熔断机制;

    若何对ClientA做一个schedule(筹划安排),比如准时发送等;

    没有消息审计机制;

    事物处赖寥。

    办事总线恰是这种场景的抽象,并且为我们供给了这些机制,让我们赶紧来看个毕竟吧。

    四、初识MassTransit

    MassTransit是.NET平台下的一款开源免费的ESB产品,官网:http://masstransit-project.com/,GitHub 700 star,500 Fork,类似的产品还有NServiceBus,之所以要选用MassTransit是因为他要比NServiceBus轻量级,别的在MassTransit开辟之初就选用了RabbitMQ作为消息传输组建;同时我想拿他跟NServiceBus做个比较,看看他们到底有哪些侧重点。

    1、新建控制台应用法度榜样:Masstransit.RabbitMQ.GreetingClient

    应用MassTransit可以大年夜Nuget中安装:

    1. Install-Package MassTransit.RabbitMQ 

    三、 发明抽象

    1. static void Main(string[] args) 
    2.     Console.WriteLine("Press 'Enter' to send a message.To exit, Ctrl + C"); 
    3.   
    4.     var bus = BusCreator.CreateBus(); 
    5.     var sendToUri = new Uri($"{RabbitMqConstants.RabbitMqUri}{RabbitMqConstants.GreetingQueue}"); 
    6.   
    7.     while (Console.ReadLine()!=null
    8.     { 
    9.         Task.Run(() => SendCommand(bus, sendToUri)).Wait(); 
    10.     } 

        推荐阅读

        CVPR 2017论文解读:特征金字塔网络FPN

      论文:Feature Pyramid Networks for Object Detection论文地址:https://arxiv.org/abs/1612.03144这里介绍的文┞仿是来自 Facebook 的特点金字塔收集 Feature Pyramid Networks(FPN)。F>>>详细阅读


      本文标题:如何优雅的使用RabbitMQ

      地址:http://www.17bianji.com/lsqh/36412.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)