SlideShare a Scribd company logo
www.dotnetconf.net
.NET Conf 2018 - Message Queue Based RPC
•
•
•
•
•
•
https://twitter.com/hughcards/status/423952995240648704
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
Message Queue Basic
https://tw.saowen.com/a/63c04f9638e1f962669b04d6acc6b6eae697b42978b338384
c0a8626bf3de617
.NET Conf 2018 - Message Queue Based RPC
http://www.rabbitmq.com/getstarted.html
Design (Architecture)
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
如果我需要等待 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 )
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
Main 呼叫 Client.CallAsync( ) 要執行完成這段 code 才會
回傳 async Task.
CallAsync( ) Task 回傳後, await 必須等到這段結束才會
拿到 Result
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
https://columns.chicken-house.net/2007/12/17/threadpool-
%E5%AF%A6%E4%BD%9C-3-autoresetevent-manualresetevent/
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
.NET Conf 2018 - Message Queue Based RPC
https://columns.chicken-house.net/2018/05/10/tips-handle-shutdown
.NET Conf 2018 - Message Queue Based RPC
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
.NET Conf 2018 - Message Queue Based RPC
【我們正在招募】
● 架構師
● C# Asp.Net MVC開發工程師
https://www.91app.com/careers/
.NET Conf 2018 - Message Queue Based RPC
fb.com/Study4.twfb.com/groups/216312591822635 Study4.TW
.NET Conf 2018 - Message Queue Based RPC

More Related Content

What's hot (20)

PDF
Harbor RegistryのReplication機能
Masanori Nara
 
PPTX
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
Edward Kuo
 
PPTX
[2019 DevOpsDays Taipei]Azure DevOps 建立 DevOps 團隊
Edward Kuo
 
PPTX
網站自動化測試
Bruce Chen
 
PPTX
大型 Web Application 轉移到 微服務的經驗分享
Andrew Wu
 
PPTX
Meetup 23 - 03 - Application Delivery on K8S with GitOps
Vietnam Open Infrastructure User Group
 
PDF
DevOps核心理念和實踐
Martin Liu
 
PPTX
Dockerからcontainerdへの移行
Akihiro Suda
 
PPTX
大規模微服務導入 - #1, 從零開始的系統架構設計概觀
Andrew Wu
 
PPTX
Room 2 - 1 - Phạm Quang Minh - A real DevOps culture in practice
Vietnam Open Infrastructure User Group
 
PDF
Comparing Next-Generation Container Image Building Tools
Akihiro Suda
 
PDF
Cloud-Native CI/CD on Kubernetes with Tekton Pipelines
Nikhil Thomas
 
PDF
EC2でkeepalived+LVS(DSR)
Sugawara Genki
 
PPTX
コンテナネットワーキング(CNI)最前線
Motonori Shindo
 
PDF
SONiCインストールしてみた
wataken44
 
PDF
3GPP 5G SA Detailed explanation 1(Relationship between 5G Identifier and Virt...
Ryuichi Yasunaga
 
PDF
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
 
PDF
Visual Studio 開發密技大補帖 | Study4.TW 2021 小聚#2
Alan Tsai
 
PDF
The journey to GitOps
Nicola Baldi
 
PDF
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
 
Harbor RegistryのReplication機能
Masanori Nara
 
[2020 .NET Conf] 企業Azure DevOps Service 實際應用架構與秘辛
Edward Kuo
 
[2019 DevOpsDays Taipei]Azure DevOps 建立 DevOps 團隊
Edward Kuo
 
網站自動化測試
Bruce Chen
 
大型 Web Application 轉移到 微服務的經驗分享
Andrew Wu
 
Meetup 23 - 03 - Application Delivery on K8S with GitOps
Vietnam Open Infrastructure User Group
 
DevOps核心理念和實踐
Martin Liu
 
Dockerからcontainerdへの移行
Akihiro Suda
 
大規模微服務導入 - #1, 從零開始的系統架構設計概觀
Andrew Wu
 
Room 2 - 1 - Phạm Quang Minh - A real DevOps culture in practice
Vietnam Open Infrastructure User Group
 
Comparing Next-Generation Container Image Building Tools
Akihiro Suda
 
Cloud-Native CI/CD on Kubernetes with Tekton Pipelines
Nikhil Thomas
 
EC2でkeepalived+LVS(DSR)
Sugawara Genki
 
コンテナネットワーキング(CNI)最前線
Motonori Shindo
 
SONiCインストールしてみた
wataken44
 
3GPP 5G SA Detailed explanation 1(Relationship between 5G Identifier and Virt...
Ryuichi Yasunaga
 
DPDKによる高速コンテナネットワーキング
Tomoya Hibi
 
Visual Studio 開發密技大補帖 | Study4.TW 2021 小聚#2
Alan Tsai
 
The journey to GitOps
Nicola Baldi
 
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
 

Similar to .NET Conf 2018 - Message Queue Based RPC (20)

PDF
[1C2]webrtc 개발, 현재와 미래
NAVER D2
 
PDF
Analyzing the Performance of Mobile Web
Ariya Hidayat
 
PDF
So You Want To Write Your Own Benchmark
Dror Bereznitsky
 
PDF
Service Virtualization - Next Gen Testing Conference Singapore 2013
Min Fang
 
PDF
Performance Oriented Design
Rodrigo Campos
 
PDF
Linux Kernel vs DPDK: HTTP Performance Showdown
ScyllaDB
 
PDF
Sprint 127
ManageIQ
 
PPTX
PVS-Studio. Static code analyzer. Windows/Linux, C/C++/C#. 2017
Andrey Karpov
 
PPTX
NodeJs
Orkhan Muradov
 
PDF
Jvm operation casual talks
Yusaku Watanabe
 
PDF
2020 icldla-updated
Shien-Chun Luo
 
PDF
Implementing an IPv6 Enabled Environment for a Public Cloud Tenant
Shixiong Shang
 
PDF
手把手教你如何串接 Log 到各種網路服務
Mu Chun Wang
 
PPTX
Static analysis and writing C/C++ of high quality code for embedded systems
Andrey Karpov
 
KEY
Varnish @ Velocity Ignite
Artur Bergman
 
PPTX
Top Performance Problems in Distributed Architectures
Andreas Grabner
 
PPT
Tuning and development with SIP Servlets on Mobicents
Jean Deruelle
 
PPTX
Service mesh from linkerd to conduit (cloud native taiwan meetup)
Chia-Chun Shih
 
PPTX
ASP.NET Core dospělo už i v Linuxu
Tomáš Horváth
 
PPTX
Practical Operation Automation with StackStorm
Shu Sugimoto
 
[1C2]webrtc 개발, 현재와 미래
NAVER D2
 
Analyzing the Performance of Mobile Web
Ariya Hidayat
 
So You Want To Write Your Own Benchmark
Dror Bereznitsky
 
Service Virtualization - Next Gen Testing Conference Singapore 2013
Min Fang
 
Performance Oriented Design
Rodrigo Campos
 
Linux Kernel vs DPDK: HTTP Performance Showdown
ScyllaDB
 
Sprint 127
ManageIQ
 
PVS-Studio. Static code analyzer. Windows/Linux, C/C++/C#. 2017
Andrey Karpov
 
Jvm operation casual talks
Yusaku Watanabe
 
2020 icldla-updated
Shien-Chun Luo
 
Implementing an IPv6 Enabled Environment for a Public Cloud Tenant
Shixiong Shang
 
手把手教你如何串接 Log 到各種網路服務
Mu Chun Wang
 
Static analysis and writing C/C++ of high quality code for embedded systems
Andrey Karpov
 
Varnish @ Velocity Ignite
Artur Bergman
 
Top Performance Problems in Distributed Architectures
Andreas Grabner
 
Tuning and development with SIP Servlets on Mobicents
Jean Deruelle
 
Service mesh from linkerd to conduit (cloud native taiwan meetup)
Chia-Chun Shih
 
ASP.NET Core dospělo už i v Linuxu
Tomáš Horváth
 
Practical Operation Automation with StackStorm
Shu Sugimoto
 
Ad

More from Andrew Wu (7)

PPTX
微服務資料管理的天堂路 - CQRS / Event Sourcing 的應用與實踐
Andrew Wu
 
PPTX
大規模微服務導入 - #2 從零開始的微服務 .NET Core 框架設計
Andrew Wu
 
PPTX
Monitoring Tools 大亂鬥 - Consul
Andrew Wu
 
PPTX
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
Andrew Wu
 
PPTX
容器驅動開發 - .NET Conf 2017 @ 台中
Andrew Wu
 
PPTX
API Token 入門
Andrew Wu
 
PPTX
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
Andrew Wu
 
微服務資料管理的天堂路 - CQRS / Event Sourcing 的應用與實踐
Andrew Wu
 
大規模微服務導入 - #2 從零開始的微服務 .NET Core 框架設計
Andrew Wu
 
Monitoring Tools 大亂鬥 - Consul
Andrew Wu
 
與大師對談: 轉移到微服務架構必經之路 ~ 系統與資料庫重構
Andrew Wu
 
容器驅動開發 - .NET Conf 2017 @ 台中
Andrew Wu
 
API Token 入門
Andrew Wu
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
Andrew Wu
 
Ad

Recently uploaded (20)

PPTX
Customise Your Correlation Table in IBM SPSS Statistics.pptx
Version 1 Analytics
 
PDF
Top Agile Project Management Tools for Teams in 2025
Orangescrum
 
PPTX
Get Started with Maestro: Agent, Robot, and Human in Action – Session 5 of 5
klpathrudu
 
PDF
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
PPTX
AEM User Group: India Chapter Kickoff Meeting
jennaf3
 
PDF
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
PDF
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
PPTX
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
Ortus Solutions, Corp
 
PPTX
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PPTX
iaas vs paas vs saas :choosing your cloud strategy
CloudlayaTechnology
 
PPTX
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
PDF
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
PDF
Everything you need to know about pricing & licensing Microsoft 365 Copilot f...
Q-Advise
 
PDF
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
PPTX
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
PDF
UITP Summit Meep Pitch may 2025 MaaS Rebooted
campoamor1
 
PDF
MiniTool Power Data Recovery 8.8 With Crack New Latest 2025
bashirkhan333g
 
PDF
Simplify React app login with asgardeo-sdk
vaibhav289687
 
PPTX
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 
Customise Your Correlation Table in IBM SPSS Statistics.pptx
Version 1 Analytics
 
Top Agile Project Management Tools for Teams in 2025
Orangescrum
 
Get Started with Maestro: Agent, Robot, and Human in Action – Session 5 of 5
klpathrudu
 
AI + DevOps = Smart Automation with devseccops.ai.pdf
Devseccops.ai
 
AEM User Group: India Chapter Kickoff Meeting
jennaf3
 
Generic or Specific? Making sensible software design decisions
Bert Jan Schrijver
 
[Solution] Why Choose the VeryPDF DRM Protector Custom-Built Solution for You...
Lingwen1998
 
Change Common Properties in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
TheFutureIsDynamic-BoxLang witch Luis Majano.pdf
Ortus Solutions, Corp
 
Coefficient of Variance in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
iaas vs paas vs saas :choosing your cloud strategy
CloudlayaTechnology
 
ChiSquare Procedure in IBM SPSS Statistics Version 31.pptx
Version 1 Analytics
 
The 5 Reasons for IT Maintenance - Arna Softech
Arna Softech
 
Everything you need to know about pricing & licensing Microsoft 365 Copilot f...
Q-Advise
 
4K Video Downloader Plus Pro Crack for MacOS New Download 2025
bashirkhan333g
 
In From the Cold: Open Source as Part of Mainstream Software Asset Management
Shane Coughlan
 
UITP Summit Meep Pitch may 2025 MaaS Rebooted
campoamor1
 
MiniTool Power Data Recovery 8.8 With Crack New Latest 2025
bashirkhan333g
 
Simplify React app login with asgardeo-sdk
vaibhav289687
 
Comprehensive Risk Assessment Module for Smarter Risk Management
EHA Soft Solutions
 

.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