microserviceplumbing with rabbitmq€¦ · • .net core • rabbitmq • docker • vue.js....
TRANSCRIPT
![Page 1: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/1.jpg)
Microservice PlumbingWithRabbitMQASYNC MESSAGINGFORMICROSERVICES
https://github.com/JasonRowe
![Page 2: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/2.jpg)
AboutMe
@JSONROW
jasonrowe.com
PastAsync MessagingExperience• MSMQ• NServiceBus• MassTransit
CurrentTechStack• .NETCore• RabbitMQ• Docker• Vue.JS
![Page 3: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/3.jpg)
RabbitMQ OverviewWhatisRabbitMQ?
@JSONROW
![Page 4: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/4.jpg)
WhatisAMQP?AdvancedMessageQueueProtocol
Openinternetprotocolforbusinessmessaging
Binarywire-levelprotocol
AMQPwasdesignedwiththefollowingmaincharacteristicsasgoals:
Security
Reliability
Interoperability
Standard
Open
@JSONROW
![Page 5: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/5.jpg)
AMQPModel
Exchange->Binding->[Queue]
Exchanges
Receivesandroutesmessages
Binding
Definestherelationshipbetweenexchangeandqueue
Queues
Storesmessagesuntiltheyareprocessed
@JSONROW
![Page 6: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/6.jpg)
RabbitMQ Hello,world.
@JSONROW
![Page 7: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/7.jpg)
RabbitMQ – changingamonolith
@JSONROW
P/C P/C P/C
P CX Q
P
C
C
BigChallenge- changingthecommunicationpattern.
![Page 8: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/8.jpg)
MessageDurabilityPublisherconfirms
Durabilityexchangesandqueues
message acknowledgements
Deliveryandprocessingconfirmation
@JSONROW
![Page 9: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/9.jpg)
MessagePublishing
@JSONROW
MessagePublishinginRabbitMQ,by GavinMRoy
![Page 10: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/10.jpg)
ReceivingMessages
@JSONROW
MessagePublishinginRabbitMQ,by GavinMRoy
![Page 11: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/11.jpg)
HighAvailability
EnablePublisherconfirms
UseDurablequeues,exchanges
Extensionstoconsider- consistentlyhashandsharding
DonotenableHiPE
Prefetch configuration
MultinodeswithHApolicy
@JSONROW
![Page 12: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/12.jpg)
HighPerformanceEnableHiPE
DisableLazyQueue
Shortqueues
TransientMessages
DisableHA
@JSONROW
![Page 13: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/13.jpg)
MyRecentRabbitMQ successstory.RefiningaservicesboundariesandswitchingtoRabbitMQ
@JSONROW
![Page 14: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/14.jpg)
RecentRabbitMQ successstory.
0
10,000
20,000
30,000
40,000
50,000
60,000
70,000
Run1 Run2 Run3
AverageTime(m
s)
Baselinetestruns
Legacy RabbitMQ
@JSONROW
![Page 15: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/15.jpg)
DirectExchange
Publisher DirectexchangeCreatedModifiedDeleted
RoutingKeys
Queue
Queue
Queue
Consumer
Consumer
Consumer
@JSONROW
Modified
Bindings
![Page 16: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/16.jpg)
Fanoutexample
P
C
Fanoutexchange
QueueA
QueueB
QueueC
@JSONROW
C
C
![Page 17: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/17.jpg)
TopicexchangeexampleWildcardroutingbyroutingkey*(star)cansubstituteforexactlyoneword.#(hash)cansubstituteforzeroormorewords.
@JSONROW
P Topicexchange
Q
Q
Q
C
C
C
*.*.mdc
Bindings
![Page 18: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/18.jpg)
AnalysisRequestExample
@JSONROW
P X
Q
cnc.emea
C
AnalysisRequest
Q
Q
C
C 3DPAmericaAnalysis
CNCUKAnalysis
InjectionMoldingJapanAnalysis
Q C AnalysisArchive
![Page 19: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/19.jpg)
CompetingConsumers
@JSONROW
![Page 20: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/20.jpg)
Rabbitmq UseCasesGood
EventStream
Connectingappsnewandoldwrittenindifferentlanguages
WhenyouareuncertainRabbitMQ isacertainchoice
multiprotocolandpatterns
Federationbetweendatacenters
Bad
Largebinaryvideosandimages
Useasadatastorelargequeues
@JSONROW
![Page 21: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/21.jpg)
LessonsLearnedMajorRabbitMQ upgradesandErlang upgradescomeswithsomedowntimeevenonmulti-nodeclusters.(bluegreen)
Connections- don'topennewconnectionswitheverymessage.Don'tletqueuesgrow10,000messagesistoomuchlimitwithTTLormaxsizeSendpersistentmessagesandusedurablequeuesandexchangeUsepublisherconfirmswhenitmakessenseTakealookatprefetch andadjustifneeded
@JSONROW
![Page 22: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/22.jpg)
MonitoringQueueLength
MissingConsumers
Howlongmessageshavebeeninqueue
CPU,RAM,Disk
https://www.rabbitmq.com/production-checklist.html
@JSONROW
![Page 23: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/23.jpg)
Summary• RabbitMQ isagreatsolutionforconnectingasync messagingforMicroservices
• RabbitMQ providesoptionsforhighperformanceandhighreliability
• Messagingdoesn’tneedtobehard,itcanbeboring,andboringisgood.
• It’sageneralpurposemessagingsystemthatmaybetherightchoicetohelpbreakupyourmonolithorconnectourmicroservices
@JSONROW
![Page 24: MicroservicePlumbing With RabbitMQ€¦ · • .NET Core • RabbitMQ • Docker • Vue.JS. RabbitMQOverview What is RabbitMQ? @JSONROW. What is AMQP? Advanced Message Queue Protocol](https://reader030.vdocuments.net/reader030/viewer/2022040107/5ed2d43e924c8a40787fb491/html5/thumbnails/24.jpg)
Questions?
@JSONROW