zoukankan      html  css  js  c++  java
  • 8-EasyNetQ之Send & Receive

    鉴于Publish/Subsrcibe和Request/Response模式是位置透明的,在这个方面,你不需要去指定消息的消费者具体所处的位置,Send/Receive模式是特别针对通过命名队列来设计的。它也使得不用假定关于什么样的消息类型能发送到这个队列。这意味着,你能够发送不同类型的消息到相同的队列中。

    Send/Receive模式对于创建“命令管道”,在那种你想为单个命令处理器建立一个缓冲通道情况下,是最理想的。

    去发送一个消息,使用IBus的Send方法,需要指定你想发送消息到指定队列的名称和消息本身。

    bus.Send("my.queue", new MyMessage{ Text = "hello widget!"});
    

    为特定消息类型创建一个消息接收器,使用IBus上的Receive方法:

    bus.Receive<MyMessage>("my.queue", 
        message => Console.WriteLine("Message:{0}",message.Text));
    

    你能够在相同队列上为不同的消息类型创建多个接收者,通过使用Receive 带有一个Action的重载方法,代码如下:

    bus.Receive("my.queue", x => x
        .Add<MyMessage>(message => deliveredMyMessage = message)
        .Add<MyOtherMessage>(message => deliveredMyOtherMessage = message));
    

    如果消息送达了一个接收队列,但是没有匹配到任何接收者,EasyNetQ将会把消息带着一个异常“No handler for message type写进EasyNetQ的错误队列”。

    注意:你可能不想对相同队列多次调用bus.Receive方法。这就将在队列和RatbbitMQ上创建一个新的消费者去轮询这些消息。假如你正在消费不同类型的消息,用不同的Receive调用(因此也是不同的消费者),你的有些消息将会最终发送到错误队列,因为EasyNetQ不能找到处理器去处理与你消息类型有关系的消费者,消息将会被消耗掉

    英文地址:https://github.com/EasyNetQ/EasyNetQ/wiki/Send-Receive
    本文地址:http://www.cnblogs.com/HuangLiang/p/EasyNetQ_Send_Receive.html

  • 相关阅读:
    jQuery实现复选框全选、全不选、反选问题解析
    春节回来后至今的工作汇总
    后台管理的权限
    谨记:新增逻辑和编辑逻辑的相同和不同
    html5的本地数据库
    php做api接口的一些随笔
    js setTimeout
    在jquery选中器中使用变量
    jQuery ajax用get方法传递给api数组
    关键词处理,表格内容分类处理
  • 原文地址:https://www.cnblogs.com/HuangLiang/p/EasyNetQ_Send_Receive.html
Copyright © 2011-2022 走看看