我可以使用以下代碼成功發(fā)布消息: using (IAdvancedBus bus = RabbitHutch.CreateBus("host=192.168.153.128:5672;username=user;password=pass").Advanced) { IExchange exchange = bus.ExchangeDeclare("milk.api", ExchangeType.Topic); IQueue queue = bus.QueueDeclare("milkorderqueue"); IBinding binding = bus.Bind(exchange, queue, "#"); bus.Publish<MilkOrderRequest>(exchange, "#", true, new Message<MilkOrderRequest>(milkOrder)); } return new HttpResponseMessage(System.Net.HttpStatusCode.OK);當(dāng)我的訂閱者嘗試接收消息時(shí),EasyNetQ_Default_Error_Queue 隊(duì)列會(huì)增加。這是偵聽器的代碼: IBus bus = RabbitHutch.CreateBus(@"host=192.168.153.128:5672;username=user;password=pass"); bus.Subscribe<MilkOrderRequest>("my_subscription_id", message => { Console.WriteLine($"Order recieved: {message.Milk}."); }, config => { config.WithQueueName("milkorderqueue"); });我也嘗試了以下方法但沒有成功: IAdvancedBus bus = RabbitHutch.CreateBus(@"host=192.168.153.128:5672;username=user;password=pass").Advanced; IExchange exchange = bus.ExchangeDeclare("milkshop.subscriber", ExchangeType.Topic); IQueue queue = bus.QueueDeclare("milkorderqueue"); bus.Bind(exchange, queue, "#"); bus.Consume<MilkOrderRequest>(queue, (message, info) => { Console.WriteLine($"Order recieved: {message.Body.Milk}."); });我無(wú)法在 Google 上找到有關(guān)異常的答案:messageType 不能為空
3 回答

慕姐8265434
TA貢獻(xiàn)1813條經(jīng)驗(yàn) 獲得超2個(gè)贊
發(fā)現(xiàn)錯(cuò)誤。我的 API 項(xiàng)目和控制臺(tái)應(yīng)用程序使用不同版本的 EasynetQ nuget 包。一個(gè)是 2.33,另一個(gè)是 3.0.0。

HUWWW
TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊
在我的情況下,問題與使用舊版本 ENQ 的發(fā)布者服務(wù)有關(guān),而后者又使用LegacyTypeNameSerializer。在使用較新版本 ENQ 的消費(fèi)服務(wù)端,我所要做的就是在創(chuàng)建總線時(shí)添加以下內(nèi)容:
serviceRegister.EnableLegacyTypeNaming();
這是一種擴(kuò)展方法,應(yīng)該包含在較新版本的 ENQ 中。
- 3 回答
- 0 關(guān)注
- 280 瀏覽
添加回答
舉報(bào)
0/150
提交
取消