Exactly-once semantics is the most desirable guarantee, but is impossible to guarantee without some sort of cooperation between the broker and the consumer. If the broker uses acknowledgements to producers for publishing message, each message must have unique IDs for the broker to deduplicate retires.
On the consumer side, deduplication can be used to ensure that duplicate messages are not processed.
Some message systems, such as Kafka, allow atomic consume-from-one-and-publish-to-n semantics. This is extremely helpful for EDA architectures and we will look at these in the Apache Kafka deep-dive section.