博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ABP vNext分布式事件总线RabbitMQ注意事项
阅读量:4034 次
发布时间:2019-05-24

本文共 1560 字,大约阅读时间需要 5 分钟。

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

关键配置说明

关键配置类:AbpRabbitMqEventBusOptions.cs

用于配置连接名、队列名即要监听的队列名、交换机名;

关键配置类:AbpRabbitMqOptions

即原始RabbitMq针对.NET的连接配置类:RabbitMqConnections.cs

关键配置——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不支持,源码如下:

注意事项

  • A服务=》B服务=》C服务,传输对象1与传输对象2不能是同一个命名空间下的同一个类名,这是由于ABP vNext EventBus底层将完整类名作为路由键进行转发,如果两个对象一致,那么B将进入死循环,附带C也进入异常

  • A、B、C之间应该共用同一个交换机,即配置的ExChangeName一致,而队列名不一致

  • 不存在自己指定自己作为生产者的队列的名字,所以必须先启动队列消费者创建了相关队列,队列生产者发出Message才有效果,即启动顺序:C=>B=>A

转载地址:http://vbudi.baihongyu.com/

你可能感兴趣的文章
慢慢欣赏linux phy驱动初始化2
查看>>
慢慢欣赏linux CPU占用率学习
查看>>
2020年终总结
查看>>
linux内核学习(4)建立正式内核的页式内存映射, 以x86 32位模式为例
查看>>
Homebrew指令集
查看>>
React Native(一):搭建开发环境、出Hello World
查看>>
React Native(二):属性、状态
查看>>
JSX使用总结
查看>>
React Native(五):Image的各种姿势
查看>>
React Native(四):布局(使用Flexbox)
查看>>
React Native(七):Android双击Back键退出应用
查看>>
Android自定义apk名称、版本号自增
查看>>
adb command not found
查看>>
Xcode 启动页面禁用和显示
查看>>
Decode Ways
查看>>
Plus One
查看>>
Subsets
查看>>
Subsets II
查看>>
Maximum Subarray
查看>>
Add Binary
查看>>