One of my Friend,A Solution Architect has asked these Questions so that i can understand the in depth concepts of WCF.Let’s find what the Questions are….
What are Volatile queues?
- When you send a message with no assurances, MSMQ only makes a best effort to deliver the message, unlike with Exactly Once assurances where MSMQ ensures that the message gets delivered or, if it cannot be delivered, lets you know that the message cannot be delivered.
- In certain scenarios, you may want to send a volatile message with no assurances over a queue, when timely delivery is more important than losing messages. Volatile messages do not survive queue manager crashes. Therefore if the queue manager crashes, the non-transactional queue used to store volatile messages survives but the messages themselves do not because the messages are not stored on the disk. [MSDN]
In queued communication, the client communicates to the service using a queue. More precisely, the client sends messages to a queue. The service receives messages from the queue. The service and client therefore, do not have to be running at the same time to communicate using a queue.
What are Dead letter queues?
- In messaging systems, after an evident failure to deliver a message, that message goes
to a special queue called the dead-letter queue (DLQ). The DLQ is somewhat analogous
to a classic dead-letter mailbox at the main post office. In the context of this discussion,
failure to deliver constitutes not only failure to reach the service-side queue, but also
failure to commit the playback transaction. MSMQ on the client and on the service
side constantly acknowledge to each other receipt and processing of messages. If the
service-side MSMQ successfully receives and retrieves the message from the serviceside
queue (that is, if the playback transaction committed), it sends a positive acknowledgment
(ACK) to the client-side MSMQ. The service-side MSMQ can also send a
negative acknowledgment (NACK) to the client. When the client-side MSMQ receives
a NACK, it posts the message to the DLQ. If the client-side MSMQ receives neither an
ACK nor a NACK, the message is considered in-doubt.
More TO BE ANSWERED….