NOTE

2.11 Best-Effort Notification Implementation: MQ

1. What It Is - 1. The producer finishes executing its local transaction and sends a message to MQ. 2. MQ sends the message to the consumer. 3. The consumer consumes the message and executes its local transaction; if successful it ack's, and if it fails it nack's and requeues the message. 4. The consumer can actively call the producer's interface to query message status.

Distributed Systems1 min readhistorical

This is a historical learning note and may contain outdated or incomplete understanding.

1. What It Is

  1. The producer finishes executing its local transaction and sends a message to MQ.
  2. MQ sends the message to the consumer.
  3. The consumer consumes the message and executes its local transaction; if successful it ack’s, and if it fails it nack’s and requeues the message.
  4. The consumer can actively call the producer’s interface to query message status.

2. Characteristics

It is similar to Distributed Transaction Solution: Reliable-Message Eventual Consistency.md (the original link has expired). It depends on MQ and allows a small number of distributed transactions to fail.

2.1. Best-Effort Notification vs Reliable-Message Eventual Consistency

Best-effort notification Reliable-message eventual consistency
Failure retry The consumer actively queries the producer’s interface The producer periodically queries unfinished messages and sends them to the consumer

3. Implementation

4. References

Discussion

Sign in with GitHub to comment. Discussions are stored as GitHub Issues.View on GitHub