MQ數據源
datasource -> topic exchange
, 數據源已固定格式發入exchange, exchange類型為topic,既可以使用路由route_key, 又可以進行通配. 不要將生產者, 消費者用在同一隊列上, 這樣耦合度高, 消息無法復用.數據源只關心輸入exchange, 對后續消費者無需關心
新加,修改數據源需要備案記錄.
消費者一般情況下使用臨時隊列, 必要情況下使用持久隊列. 隊列從數據源的exchange中訂閱數據.
程序中不要生成持久的exchange, queue. 而是在管理界面生成. 防止程序改動造成的廢棄的exchange, queue仍然存在在rabbitmq中.
-
命名統一.
exchangeName: datasource:[sth.sth] queueName: [消費者程序名稱]:[exchangeName].[subject] route_key: [exchangeName].[subject] 例: exchangeName: datasource:dispatch.event queueName: autoDispatch:dispatch.event.orderCreate route_key: dispatch.event.orderCreate
poi
exchangeName: datasource:poi
業務事件流
exchangeName: datasource:dispatch.event
日志流
其他
rabbitmq 規范
使用規范
0. 使用原則
- 數據源已固定格式發入exchange, exchange類型為topic.數據源只關心輸入exchange.
- 修改數據源, 持久隊列, 持久內部exchange需要備案記錄.
- 消費者一般非必要情況下使用臨時隊列. 隊列從數據源的exchange中訂閱數據.
- 程序中不要生成持久的exchange, queue. 而是在管理界面生成.
1. datasourceExchanges
-
命名
datasource:[datasourceName] 例: datasource:poi datasource:dispatch.event
-
記錄備案
git@gitlab.supaide.cn:sys/rabbitmq.git datasources.txt 備案說明詳見文件內部格式.
2. durable queues, exchanges
-
命名
queueName [appName]:[routingKey] exchangeName x:[appName]:[routingKey] 例: autoDispatch:dispatch.event.orderCreate x:autoDispatch:dispatch.event.*
-
記錄備案
git@gitlab.supaide.cn:sys/rabbitmq.git durableQueues.txt 備案說明詳見文件內部格式.
3. temp queues, exchagnes
-
命名
gen.[appName]:[routingKey] or 默認隨機名稱
記錄備案
無需備案