zoukankan      html  css  js  c++  java
  • 【EasyNetQ】- 发送接收

    发布/订阅和请求/响应模式是位置透明的,因为您不需要指定消息的使用者所在的位置,而发送/接收模式专门用于通过命名队列进行通信。它也不会假设可以通过队列发送的消息类型。这意味着您可以通过同一队列发送不同类型的消息。

    发送/接收模式非常适合创建“命令管道”,您需要将缓冲通道发送到单个命令处理器。

    要发送消息,请使用IBus上的Send方法,指定要将消息发送到的队列的名称以及消息本身:

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

    要为特定消息类型设置消息接收器,请使用IBus上的Receive方法:

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

    您可以使用带有Action <IReceiveRegistration>的Receive重载为同一队列上的不同消息类型设置多个接收器,例如:

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

    如果消息到达没有匹配接收器的接收队列,EasyNetQ会将消息写入EasyNetQ错误队列,并显示“未找到消息类型<消息类型>的处理程序”。

    注意:您可能不希望为同一队列调用bus.Receive多次。这将在队列中创建一个新的使用者,RabbitMQ将在它们之间循环。如果您在不同的接收呼叫(以及不同的消费者)上使用不同的类型,您的一些消息将最终出现在错误队列中,因为EasyNetQ将找不到与消费者使用的消费者相关联的消息类型的处理程序。

  • 相关阅读:
    mybatis开始
    14-spring学习-变量操作
    java动态加载jar文件
    Linux下不借助工具实现远程linux服务器上传下载文件
    UML入门
    Linux下打开超大文件的方法
    List和Array相互转换
    redis常用命令
    redis不支持多个数据库实例但是支持多个字典
    如何配置 VirtualBox 中的客户机与宿主机之间的网络连接
  • 原文地址:https://www.cnblogs.com/wangwust/p/9437389.html
Copyright © 2011-2022 走看看