In some cases, it may be tempting to use a business key as the message identifier and let the persistence layer handle the de-duping. For example, let’s assume that an application persists incoming orders into a database. If each order contains a unique order number, and we configure the database to use a unique key on the order number field, the insert operation into the database would fail if a duplicate order message is received. This solution appears elegant because we delegated the checking of duplicates to the database systems, which is very efficient at detecting duplicate keys. But we
...more

