Gianluca Trancanella
unread,Nov 9, 2022, 6:44:07 AM11/9/22Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to rabbitmq-users
Hi,
I'd like to share with you our use case in order to clear some doubts that i currently have.
The problem:
We want to replicate data across multiple applications (every application stores data in a separate -and potentially different- database).
Every application (depending on some configuration) is the "owner" of a certain type of data, so every other application would contain "replicas" of that specific data.
We thought would be a good idea to solve this problem connecting our applications with a Message-oriented Middleware and more specifically we'll try to achieve this goal with RabbitMq.
Environment:
- All our client apps will use the java library;
- The number of applications is dynamic: in some customer environments could be 3 in some others let's say up to 20;
- The "configurations" and the "data realms" are dynamically defined per customer environment needs;
- Each application will consume and will publish according to the before mentioned environment configuration.
The solution we came up with implies the followings:
- Every application will publish messages every S seconds (for instance: 10). Each message describes some data changes to share with other apps.
- Each queue is bound to a certain "data realm" (Example of queues: "CrmApp-commercialDocsRealm", "CrmApp-anotherDataRealm");
- Every application will consume from N queues DEDICATED TO THAT APPLICATION ONLY (N = the number of realms the app is interested in). Let's say N will likely be in a range between 5 to 20 (env-configuration-depenent)
I tried to describe our case in the most generic manner but if something is unclear or some important information is missing please let me know and i'll try my best to integrate.
Since we care more achieving the goal (data replication) rather then doing it as fast as possible, what do you think about the followings?
A) Some application will probably consume from 20 queues. I dont feel i should dedicate one queue on a single channel on a single thread, but i'm worried consuming all queues on a single channel on a single thread. What would you suggest?
B) I thought each application could dedicate a single thread that will publish all the messages (to different Exchanges, different types of messages, ..). Do you see any problem doing that?
If you spot anything else, every advice would be great!
Best regards,
Gianluca