Transcript Document

Message Queuing Middleware
• Message queuing is asynchronous communication
• Most distributed apps use synchronous communication
– Sender must wait for response
– Can require more hardware to handle peak workload
• With queuing, make request and then move on
– No guarantee on when receiver will process request
– Usually good response time
Fundamental Challenges
• Conventional communication technologies require Tx and
Rx application:
– Online at the same time
– Able to communicate over network at the same time
• Reality is:
–
–
–
–
Apps do not run at same time
WANs not always reliable and available
Change that requires other side to change not practical
Distributed transactions can impact availability and performance
Role of Message Queuing Middleware
• MQM satisfies four important conditions
–
–
–
–
No simultaneous connection is required
Extremely strong request and response delivery guarantees
Request and responses can be translated and reformatted
Business models must promote adoption by ISVs
Communicating Via MQM
• Applications communicate via messages
• MQM provider keep messages in queues
MQM Benefits to Programmers
• Applications can send to non running or unreachable apps
• MQM will deliver waiting messages when app is available
• MQM uses proven technologies to provide reliability for
mission critical apps
• Providers can reroute messages around failure points
MQM and Distributed Applications
• Examine MQM in a series of scenarios
– Store and forward communication
– Defensive communication
– Concurrent communication
– Journaled communication
– Connectionless communication
Downside of MQM
• Distributed communications falls into three categories
• A response is required immediately and no response will
cause application to hang
• A response is needed in time period set by business policy
• Sender trusts the system to deliver and no response is
required
MSMQ Objects
• Objects include Machines, Queues, Messages
• Using the MSMQ API, you can:
–
–
–
–
–
–
Create queue objects
Locate queue objects
Open and delete queue objects
Set and get queue object properties
Send and receive message objects
Get machine object properties
Types of Queues
• Application Created Queues
– Message
– Administration
– Response
• MSMQ or System Created Queues
– Journal
– Dead Letter
– Report
MSMQ Messages
• Most messages contain application data
• Other are MSMQ generated, acknowledgement
• Each message contains an MSMQ generated identifier
• Property also identifies message
MQM Transactions
• This model shows two transactions
• One to send messages to Queue
• One to retrieve message from Queue
Using the MSMQ API Functions
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Creating a Queue
Locating a Public Queue
Opening a Queue
Closing a Queue
Deleting a Queue
Sending Authenticated Messages
Sending Messages to a Queue
Sending Messages that Request Acknowledgments
Sending Messages that Request a Response
Sending Private Messages
Sending Messages Using an Internal Transaction
Sending Messages Using an MS DTC External Transaction
Reading Messages Synchronously
Reading Messages Asynchronously
Reading Messages Using a Cursor
Reading Messages in a Dead Letter Queue
Reading Messages in a Machine Journal
Reading Messages in a Queue Journal
Returning an Acknowledgment Message by a Connector Application
Retrieving a Queue's Properties
Setting a Queue's Properties Using API Functions
Setting Access Control Security for a Queue
Using Transactions