Hi Colin,
thank you for the prompt response! So I conclude that having multi-datacenter cluster is a valid case. Topic-based data center separation approach looks interesting.
So we may have "DC1.topic1" and all DC1 clients publish/subscribe to it, and "DC2.topic1" for the DC2 clients. Then we have our local messages only propagated to the local cluster which is good. And if local cluster is not available in DC1, DC1 clients move to "DC2.topic1".
If we will need some "aggregator" subscriber in a single place, we can subscribe to both topics.
About our use cases:
We run a mid-size online marketplace. We'd like to use messaging system for inter-system data exchange, like:
- Send event streams for product views, purchases etc to a future "data platform" that will store/aggregate all that for usage like recommendations, marketing etc
- Inter system (service) communication - sending command messages to the search service so it executes some saved searches
- Mailing (more info below)
Mailing (not sure how to do it with NATS)
We need to be able to send message to a mailer consumer group. Message will contain email contents and one of the mailers will send it.
The problem is that if mailers are too slow to process mails in the group, they will need to have their own queue built in, is this right?
So their logic might be: When received message from NATS, add it to its internal queue, and process at it's own pace. But then those mailers have to be highly available themselves...
Maybe the mailing use case can be better achieved with NATS Streaming where you have persistence.
Thanks a lot
Alex