Discussion about this post

User's avatar
Sergey Pichkurov's avatar

Great read, thank you (bit pitty GCP is not included).

BTW, KafkaStreams support full EOS semantics, which means dups should not be a concern if your processing logic is Kafka/KS (KafkaStreams) only. It fits into the most of EDA processing patterns, for the cost of committing into stateful and far-from-lightweight (especially OOTB) nature of KS - albeit it's tunable especially in releases after 2.8.

Anyway, still ALO semantics prevail, so (as pointed out in this and other articles), the key is to make business logic idempotent. In this spite, I'm not quite sure what does the concept of (standalone, stateful) Broker can add on the top of cloud-native architectures built on the top of modern services buses? I.e. broker can de-duplicate right, but then might be facing the same issue when delivering from Broker to downstream services, which again requires idemptonecy on the consume end?

Expand full comment
Szymon Bernad's avatar

In the Azure ServiceBus example I don't know what this block is supposed to be doing:

> if (this.sessionCache.hasMessage(sessionId, messageId)) {

> context.ack(deduplicationCache.get<T>(sessionId, messageId));

> return;

> }

Is deduplicationCache different than the sessionCache? Or was it a copy-paste error?

Expand full comment
4 more comments...

No posts