• 欢迎访问开心洋葱网站,在线教程,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站,欢迎加入开心洋葱 QQ群
  • 为方便开心洋葱网用户,开心洋葱官网已经开启复制功能!
  • 欢迎访问开心洋葱网站,手机也能访问哦~欢迎加入开心洋葱多维思维学习平台 QQ群
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~!
  • 由于近期流量激增,小站的ECS没能经的起亲们的访问,本站依然没有盈利,如果各位看如果觉着文字不错,还请看官给小站打个赏~~~~~~~~~~~~~!

ABP vNext EventBus For RabbitMQ 分布式事件总线使用注意事项_补充官网文档

C# 云怀大师兄 1855次浏览 0个评论

ABP vNext EventBus For RabbitMQ 分布式事件总线使用注意事项_补充官网文档

[https://docs.abp.io/zh-Hans/abp/latest/Distributed-Event-Bus-RabbitMQ-Integration](ABP vNext官方文档链接),基本使用可直接阅读官方文档,云怀不重复造轮子,只做官方未提到但重要的说明

关键配置说明

关键配置类:AbpRabbitMqEventBusOptions.cs

用于配置连接名、队列名即要监听的队列名、交换机名;
ABP vNext EventBus For RabbitMQ 分布式事件总线使用注意事项_补充官网文档

关键配置类:AbpRabbitMqOptions

即原始RabbitMq针对.NET的连接配置类:RabbitMqConnections.cs
ABP vNext EventBus For RabbitMQ 分布式事件总线使用注意事项_补充官网文档

关键配置——appsettings.json

本地连接配置

{
 "RabbitMQ": {
   "EventBus": {
     "ClientName": "MyClientName",
     "ExchangeName": "MyExchangeName"
   }
 }
}

远程主机配置

集群用逗号分隔

{
  "RabbitMQ": {
    "Connections": {
      "Default": {
        "HostName": "192.168.1.101:5701,ip2:port2,ip3:port3",
        "UserName": "yunhuai",
        "Password": "yunhuai",
        "VirtualHost": "/test"
      }
    },
    "EventBus": {
      "ClientName": "MsDemo_AServer",
      "ExchangeName": "MsDemo"
    }
  }
}

多主机

若应用程序有多个主机,指定其中之一为EventBus

{
  "RabbitMQ": {
    "Connections": {
      "Default": {
        "HostName": "123.123.123.123"
      },
      "SecondConnection": {
        "HostName": "321.321.321.321"
      }
    },
    "EventBus": {
      "ClientName": "MyClientName",
      "ExchangeName": "MyExchangeName",
      "ConnectionName": "SecondConnection"
    }
  }
}

ABP vNext 底层限制

  • 交换机只支持direct路由,原RabbitMQ可配置
  • 交换机和队列强行持久化,原RabbitMQ可配置
  • 当所有绑定队列都不在了,交换机也强制可不自动删除,原RabbitMQ可配置
  • 强制不可申明排他性队列,排他性队列特征:只对首次申明队列的连接可见并会在该连接断开时自动删除,原RabbitMQ可配置
  • 当所有消费者断开后,强制不会删除该队列,原RabbitMQ可配置
    备注:以上皆因源码写死,并非RabbitMQ不支持,源码如下:
    ABP vNext EventBus For RabbitMQ 分布式事件总线使用注意事项_补充官网文档

注意事项

ABP vNext EventBus For RabbitMQ 分布式事件总线使用注意事项_补充官网文档

  • A服务=》B服务=》C服务,传输对象1与传输对象2不能是同一个命名空间下的同一个类名,这是由于ABP vNext EventBus底层将完整类名作为路由键进行转发,如果两个对象一致,那么B将进入死循环,附带C也进入异常
  • A、B、C之间应该共用同一个交换机,即配置的ExChangeName一致,而队列名不一致
  • 不存在自己指定自己作为生产者的队列的名字,所以必须先启动队列消费者创建了相关队列,队列生产者发出Message才有效果,即启动顺序:C=>B=>A

ABP vNext EventBus For RabbitMQ 分布式事件总线使用注意事项_补充官网文档


开心洋葱 , 版权所有丨如未注明 , 均为原创丨未经授权请勿修改 , 转载请注明ABP vNext EventBus For RabbitMQ 分布式事件总线使用注意事项_补充官网文档
喜欢 (0)

您必须 登录 才能发表评论!

加载中……