Message Queue Fundamentals in .NET
Introducing Message Queues
Elton Stoneman
geekswithblogs.net/eltonstoneman
@EltonStoneman
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Introducing Message Queues
Asynchronous
communication
Improved
performance and
scalability
Enhanced
reliability
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Introducing Message Queues
Client packages work request
Sends message to queue
Carries on with other work
Handler retrieves message
Processes work
Handler confirms message complete
✔
✔

Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.

Introducing Message Queues
Client sends request
Keeps connection open
Service processes work
Client waits for response
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.

Introducing Message Queues
Client sends request
Keeps connection open
Service processes work
Client waits for response
Service sends response
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Introducing Message Queues
Client sends message to queue
Carries on with other work
Handler retrieves message
Any system which can talk to the queue
✔

Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Introducing Message Queues
Client sends message to queue
Carries on with other work
Handler retrieves message
Any system which can talk to the queue
✔

Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Introducing Message Queues
Client sends message to queue
Carries on with other work
Handler retrieves message
Any system which can talk to the queue
Any handler which has capacity

Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Introducing Message Queues
Client sends message to queue
Carries on with other work
Handler retrieves message
Any system which can talk to the queue
Any handler which has capacity

Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Introducing Message Queues
Client sends message to queue
Carries on with other work
Handler retrieves message
Any system which can talk to the queue
Any handler which has capacity

Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Introducing Message Queues
Client sends message to queue
Carries on with other work
Handler retrieves message
Any system which can talk to the queue
Any handler which has capacity
Message kept until handler available

✖
✖
✖
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Course Outline
Introducing
Message
Queues
Message
Queue PoC
MSMQ
ZeroMQ
Cloud Message
Queues
(Azure & AWS)
WebSphere MQ
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Goals Messaging and asynchronous communication
Performance, scalability, reliability
Key messaging patterns
Fire-and-forget, request-response, publish-subscribe
Message queue features
Speed, durability, accessibility, interoperability
Message queue options
MSMQ, ZeroMQ, Azure Service Bus, AWS, WebSphere MQ
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Pre-requisites
Use of synchronous
communication
(Very) Basic
system operations
Working knowledge
of .NET and C#
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
message queues
a.k.a message queuing,
messaging, message-
oriented middleware, MOM
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Messaging Patterns
Fire-and-forget Publish-subscribe
Request-response
 




Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Messaging Patterns: Fire-and-Forget
Client sends message
Queue confirms receipt
Handler retrieves message
Processes work
Handler confirms message complete
✔
✔
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Messaging Patterns: Request-Response
Client sends message + reply address
Handler retrieves message
Processes work
✔
✔
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Messaging Patterns: Request-Response
Client sends message + reply address
Handler retrieves message
Processes work
Sends response message
Client retrieves response message
✔
✔
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Messaging Patterns: Publish-Subscribe
Subscribers register with queue
Publisher sends message
Queue confirms receipt
Queue forwards message to
subscribers
✔
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Messaging Patterns
Fire-and-forget Publish-subscribe
Request-response
Scatter-Gather Subscription filters

 



Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Handling Failures
Synchronous
• Open channel between client and server
• Server processing fails
• Client is notified
Asynchronous
• No direct communication
• Message handler fails
• What happens to the message?
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Handling Failures: Retries
Handler 1 retrieves message 1
Queue locks message 1
But does not remove it
Handler 1 confirms complete
Queue removes message 1
✔
Message 2 Message 1
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Handling Failures: Retries
Handler 1 retrieves message 1
Queue locks message 1
But does not remove it
Handler 1 confirms complete
Queue removes message 1
Handler 2 retrieves message 2
Message 2
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Handling Failures: Retries
Handler 1 retrieves message 1
Queue locks message 1
But does not remove it
Handler 1 confirms failure
Or does not confirm complete in time
Queue unlocks message 1
Message 2 Message 1
✖
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Handling Failures: Retries
Handler 1 retrieves message 1
Queue locks message 1
But does not remove it
Handler 1 confirms failure
Or does not confirm complete in time
Queue unlocks message 1
Handler 2 retrieves message 1
Message 2 Message 1
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Handling Failures: Poison Messages
Handler 1 retrieves bad message
Queue locks bad message
But does not remove it
Handler 1 confirms failure
Queue unlocks bad message
Message 2 Message 1


✖
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Handling Failures: Poison Messages
Handler 1 retrieves bad message
Queue locks bad message
But does not remove it
Handler 1 confirms failure
Queue unlocks bad message
Handler 2 retrieves bad message
Message 2 never processed
Message 2 Message 1


Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Handling Failures: Dead-Letter Queue
Handler 1 retrieves bad message
Queue locks bad message
But does not remove it
Message 2 Message 1


DLQ
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Handling Failures: Dead-Letter Queue
Handler 1 retrieves bad message
Queue locks bad message
But does not remove it
Handler 1 detects poison message
Moves to dead-letter queue
Queue removes bad message
Message 2 Message 1



DLQ
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Handling Failures: Dead-Letter Queue
Handler 1 retrieves bad message
Queue locks bad message
But does not remove it
Handler 1 detects poison message
Moves to dead-letter queue
Queue removes bad message
Handler 2 retrieves message 2
Message 2

DLQ
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Handling Failures: Dead-Letter Queue
Message queue systems use DLQ
Not via a message handler
MSMQ
If a message times out
DLQ


Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Handling Failures: Dead-Letter Queue
Message queue systems use DLQ
Not via a message handler
MSMQ
If a message times out
WebSphere MQ
If the destination queue doesn’t exist
DLQ
?
?
Do Not Place Anything
in This Space
(Add watermark during
editing)
Note: Warning will not appear
during Slide Show view.
Summary
 Message queues
 Asynchronous communication
 Messaging patterns
 Fire-and-forget
 Request-response
 Publish-subscribe
 Failed processing
 Retries
 Poison messages
 The dead-letter-queue



Message
Queue PoC

message queue dotnet introduction.pdf

  • 1.
    Message Queue Fundamentalsin .NET Introducing Message Queues Elton Stoneman geekswithblogs.net/eltonstoneman @EltonStoneman
  • 2.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Introducing Message Queues Asynchronous communication Improved performance and scalability Enhanced reliability
  • 3.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Introducing Message Queues Client packages work request Sends message to queue Carries on with other work Handler retrieves message Processes work Handler confirms message complete ✔ ✔ 
  • 4.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view.  Introducing Message Queues Client sends request Keeps connection open Service processes work Client waits for response
  • 5.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view.  Introducing Message Queues Client sends request Keeps connection open Service processes work Client waits for response Service sends response
  • 6.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Introducing Message Queues Client sends message to queue Carries on with other work Handler retrieves message Any system which can talk to the queue ✔ 
  • 7.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Introducing Message Queues Client sends message to queue Carries on with other work Handler retrieves message Any system which can talk to the queue ✔ 
  • 8.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Introducing Message Queues Client sends message to queue Carries on with other work Handler retrieves message Any system which can talk to the queue Any handler which has capacity 
  • 9.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Introducing Message Queues Client sends message to queue Carries on with other work Handler retrieves message Any system which can talk to the queue Any handler which has capacity 
  • 10.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Introducing Message Queues Client sends message to queue Carries on with other work Handler retrieves message Any system which can talk to the queue Any handler which has capacity 
  • 11.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Introducing Message Queues Client sends message to queue Carries on with other work Handler retrieves message Any system which can talk to the queue Any handler which has capacity Message kept until handler available  ✖ ✖ ✖
  • 12.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Course Outline Introducing Message Queues Message Queue PoC MSMQ ZeroMQ Cloud Message Queues (Azure & AWS) WebSphere MQ
  • 13.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Goals Messaging and asynchronous communication Performance, scalability, reliability Key messaging patterns Fire-and-forget, request-response, publish-subscribe Message queue features Speed, durability, accessibility, interoperability Message queue options MSMQ, ZeroMQ, Azure Service Bus, AWS, WebSphere MQ
  • 14.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Pre-requisites Use of synchronous communication (Very) Basic system operations Working knowledge of .NET and C#
  • 15.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. message queues a.k.a message queuing, messaging, message- oriented middleware, MOM
  • 16.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Messaging Patterns Fire-and-forget Publish-subscribe Request-response      
  • 17.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Messaging Patterns: Fire-and-Forget Client sends message Queue confirms receipt Handler retrieves message Processes work Handler confirms message complete ✔ ✔
  • 18.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Messaging Patterns: Request-Response Client sends message + reply address Handler retrieves message Processes work ✔ ✔
  • 19.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Messaging Patterns: Request-Response Client sends message + reply address Handler retrieves message Processes work Sends response message Client retrieves response message ✔ ✔
  • 20.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Messaging Patterns: Publish-Subscribe Subscribers register with queue Publisher sends message Queue confirms receipt Queue forwards message to subscribers ✔
  • 21.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Messaging Patterns Fire-and-forget Publish-subscribe Request-response Scatter-Gather Subscription filters      
  • 22.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Handling Failures Synchronous • Open channel between client and server • Server processing fails • Client is notified Asynchronous • No direct communication • Message handler fails • What happens to the message?
  • 23.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Handling Failures: Retries Handler 1 retrieves message 1 Queue locks message 1 But does not remove it Handler 1 confirms complete Queue removes message 1 ✔ Message 2 Message 1
  • 24.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Handling Failures: Retries Handler 1 retrieves message 1 Queue locks message 1 But does not remove it Handler 1 confirms complete Queue removes message 1 Handler 2 retrieves message 2 Message 2
  • 25.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Handling Failures: Retries Handler 1 retrieves message 1 Queue locks message 1 But does not remove it Handler 1 confirms failure Or does not confirm complete in time Queue unlocks message 1 Message 2 Message 1 ✖
  • 26.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Handling Failures: Retries Handler 1 retrieves message 1 Queue locks message 1 But does not remove it Handler 1 confirms failure Or does not confirm complete in time Queue unlocks message 1 Handler 2 retrieves message 1 Message 2 Message 1
  • 27.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Handling Failures: Poison Messages Handler 1 retrieves bad message Queue locks bad message But does not remove it Handler 1 confirms failure Queue unlocks bad message Message 2 Message 1   ✖
  • 28.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Handling Failures: Poison Messages Handler 1 retrieves bad message Queue locks bad message But does not remove it Handler 1 confirms failure Queue unlocks bad message Handler 2 retrieves bad message Message 2 never processed Message 2 Message 1  
  • 29.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Handling Failures: Dead-Letter Queue Handler 1 retrieves bad message Queue locks bad message But does not remove it Message 2 Message 1   DLQ
  • 30.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Handling Failures: Dead-Letter Queue Handler 1 retrieves bad message Queue locks bad message But does not remove it Handler 1 detects poison message Moves to dead-letter queue Queue removes bad message Message 2 Message 1    DLQ
  • 31.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Handling Failures: Dead-Letter Queue Handler 1 retrieves bad message Queue locks bad message But does not remove it Handler 1 detects poison message Moves to dead-letter queue Queue removes bad message Handler 2 retrieves message 2 Message 2  DLQ
  • 32.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Handling Failures: Dead-Letter Queue Message queue systems use DLQ Not via a message handler MSMQ If a message times out DLQ  
  • 33.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Handling Failures: Dead-Letter Queue Message queue systems use DLQ Not via a message handler MSMQ If a message times out WebSphere MQ If the destination queue doesn’t exist DLQ ? ?
  • 34.
    Do Not PlaceAnything in This Space (Add watermark during editing) Note: Warning will not appear during Slide Show view. Summary  Message queues  Asynchronous communication  Messaging patterns  Fire-and-forget  Request-response  Publish-subscribe  Failed processing  Retries  Poison messages  The dead-letter-queue    Message Queue PoC