bus.Publish(msg, x => x.WithTopic(msg.MessageRouter));
這個代碼沒有理解,既沒有指定佇列,也沒有系結,發布的訊息不是丟失了嗎?
那什么時候指定佇列系結呢
uj5u.com熱心網友回復:
同志,要學好英文。我不玩這個easynetq,也看得出來WithTopic,這是topic
同樣我也看的出來MessageRouter,這是路由
那么你還有疑問么?
至于什么bind一類,別被rabbitmq官方那份檔案給玩壞了,那份檔案簡直了,bind其實只要一次(甚至可以不要,因為你可以直接在bs管理器在管理頁面直接定義),publish其實也就只管 “交換機名,路由,發布型別”這個幾個玩意就成
ps:請x.WithTopic轉向參考,看看這里代碼,估計里面就是交換機,路由定義。(發布只管發布,不管佇列,他是通過路由發滴,不是通過佇列名發的,所以你這里只需要定義一下交換機就好)另外建議在看看X物件定義,估計他會繼承實作一些東西或者會打一些特性標記來標記你口里的佇列和bind配置
uj5u.com熱心網友回復:
很感謝,測驗發現在訂閱時候生成queue的,所以很奇怪不訂閱訊息就丟失。這設計的。。。。uj5u.com熱心網友回復:
他設計上是這樣玩的發步、訂閱模式
發布者只管發布。訂閱者去訂閱,如果發布著的某條訊息符合訂閱規則,他就訂閱
你可以測驗一下topic的通配符
假設 publish key 是 abc.* 如果說是發布者主動發,他的意思就是 發布到 前綴是 abc.的所有佇列,但其實不是,這種訊息只會發到key是abc.*的消費者上
但是換過來測驗,如果publish key是 abc.a ,他倒是能發布到 key 為 abc.*的消費者上。
這個測驗足夠說明,是由消費者訂閱查找發布資訊,而不是發布者去主動找佇列
uj5u.com熱心網友回復:
麻煩問下,easynetq是不是只有topic,用不了fanout轉載請註明出處,本文鏈接:https://www.uj5u.com/net/175467.html
標籤:C#
