We are re-writing some part of our Retail ERP application which was written in .net 4.0 Windows Application with backend services connected via .Net remoting all the way. My question is a follow-up and updated question on what I find here(RabbitMq Architecture for distributed POS).
Our application is similar in architecture but little more sophisticated in business function and it is an Enterprise application. The reason for the re-write is to improve the performance and reliability by separating non-critical functions to go through RabbitMQ and Caching of master data(which doesn't change much like inventory list, tax, pricelist etc.) on the client machine using Mongo DB or Redis Cache.
On the Message Queuing front which were already answered in the above link, my choice will be,
- Will create the necessary queue in the RabbitMQ server one for each store in the BackOffice server and set persistence to true before starting the client.
- The Exchange will be a topic exchange and every
- Will leave the tills queues on the store's broker and using only application client on Tills to reach the transportation data.
- Tills will NOT have its own database except Caching and directly connect to in-store server.
My question now is,
- Is RabbitMQ the better choice, if we understand the complexities involved? We don't want to regret later on
- On the RabbitMQ Client, We are working only with EasyNetQ with advanced binding. Now started comparing it with MassTransit and there are several other suggestions when I searched for it(Kafka seems to be another better candidate as suggested in the comment). Is there any other open source plugin which better suit (out of the box) this UseCase?
Hope I have given sufficient details and adhered to the guidelines. Please excuse if I am not.