Why Messaging ?
Messaging-based communication allows the development of loosely-coupled system, where application processes interact asynchronously and indirectly throw a reliable messaging broker. Producer and consumer applications can be replaced, upgraded, and load-balanced gracefully and independently, without disrupting other parts of the system. The broker ensures a suitable QoS, providing buffering and flow-control, persistence and transactions. Multi-server installations are used for scalability and high-availability.
Software architectures based on message-based IPC achieve a level of resilience and modular deployment, hard to match trough traditional monolithic architectures.
Technologies of Choice
RabbitMQ is the leading AMQP based messaging broker, that achieves reliable high-throughput message delivery. Administration is done trough an excellent management web UI, and powerful set of management tools. Cluster based deployments are used to achieve high-availability. While federated server deployments are used to create multi data-center internet-scale scalable architectures.
Drivers/Bindings exist for many programming languages, including Java and C#/.Net , among other. High-level programming framework such as Spring AMQP and Spring .NET AMQP further simplify the development of RabbitMQ and AMQP based applications.
RabbitMQ Based Architectures
RabbitMQ supports multiple deployment modes that gives maximum flexibility to setup a high-performance messaging service. Understanding the trade-off between tightly-couple clusters, high-availability queues, and loosely-couple multi-server federations is a must to make sound architectural decisions.
- Loosely-coupled IPC
- Real-time notifications-Data
- Large-scale information dissemination
- User Notifications and SMTP/Email integration
- Complex Processing Workflows
EInnovator can help by matching application and infrastructure requirements to the architectural and design decisions, by showing the concrete steps to follow to setup a security policy for servers and projects, and how to articulate the messaging architecture with other aspects of application development including the persistence solution.