www.dotnetconf.net
• • • • • • https://twitter.com/hughcards/status/423952995240648704
Message Queue Basic
https://tw.saowen.com/a/63c04f9638e1f962669b04d6acc6b6eae697b42978b338384 c0a8626bf3de617
http://www.rabbitmq.com/getstarted.html
Design (Architecture)
如果我需要等待 queue 處理結果, 才能進行下一步? RPC (over queue) & Async Call?
http://www.rabbitmq.com/tutorials/tutorial-six-dotnet.html Queue RPC 基本運作原理: 送出的 Message 標註 Correlation ID 與 Reply Queue 告知 回傳的管道。實作上的挑戰在於非同步的處理,以及 C / S 都要扮演 Consumer 的角色 (對不同的 Queue)。
Implementation & Demo ( .NET Standard 2.0 )
Main 呼叫 Client.CallAsync( ) 要執行完成這段 code 才會 回傳 async Task. CallAsync( ) Task 回傳後, await 必須等到這段結束才會 拿到 Result
https://columns.chicken-house.net/2007/12/17/threadpool- %E5%AF%A6%E4%BD%9C-3-autoresetevent-manualresetevent/
https://columns.chicken-house.net/2018/05/10/tips-handle-shutdown
References
https://www.cloudamqp.com/blog/2018-01-19-part4-rabbitmq-13-common-errors.html
3. Don’t share channels between threads 6. Don't have an unlimited prefetch value
http://www.rabbitmq.com/tutorials/tutorial-six- dotnet.html
https://dzone.com/articles/rabbitmq-request- response
https://www.rabbitmq.com/direct-reply-to.html
https://www.rabbitmq.com/releases/rabbitmq-dotnet-client/v3.4.2/rabbitmq-dotnet-client-3.4.2-client-htmldoc/html/nam https://github.com/rabbitmq/rabbitmq-dotnet-client/tree/master/projects/client/RabbitMQ.Client/src/client/messagepat
【我們正在招募】 ● 架構師 ● C# Asp.Net MVC開發工程師 https://www.91app.com/careers/
fb.com/Study4.twfb.com/groups/216312591822635 Study4.TW
.NET Conf 2018 - Message Queue Based RPC

.NET Conf 2018 - Message Queue Based RPC

Editor's Notes

  • #4 把資訊點連起來,能靈活運用才是知識
  • #10 Basic: store and forward, queue 可以當作 buffer, 不論是 client or server 短暫離線都不會有影響 Like email, 使用信件溝通,叫可靠也較不會影響到他人目前的工作。如果你不需要及時的對談,用 email 是叫好的選擇。 可靠 寄後不理 留紀錄 有空再處理,對方不會瞬間被忙翻
  • #11 號碼機 就是典型的 QUEUE 受理櫃檯就是 WORKER (CONSUMER) 顧客就是 CLIENT (PRODUCER) 決定乘載能力的幾個關鍵: 號碼機能否在有限期間內 (EX: 5 sec) 印出號碼單給 USER? 場地有沒有足夠空間給客人等待? 服務櫃台是否夠多,足以消化 QUEUE 內的 JOB ? 處理速度 = 服務櫃台數量 x 單一櫃檯的服務速度 等候人數 = QUEUE LENGTH = WAITING TIME 等候人數 = QUEUE STORAGE 客人可以先離開辦事情 櫃台若需要離開 (吃飯、上廁所),只要處理完已受理的客人 (叫號),別在叫下一號,就可以安全的暫離 擴充櫃檯數就能提升服務量 (SCALE OUT)
  • #18 Orchestration: 編配 (指: 交響樂, 有總指揮) Choregraphy: 編排 (編舞、指: 芭雷舞)
  • #36 Var a = await demo.SendAsync(“Hello!”); Console.WriteLine(….. {a} … );
  • #42 PublishMessage()
  • #63 MSMQ 也有類似機制,可以指定 correlaction id 取得 reply message, 而不用按照順序 FIFO 找 MSMQ 的 ack 狀態有專屬管道可以通知 client, 讓 client 能做到 whatsapp 類似功能: 已送達 V, 已讀 VV