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 Application Development — Java Track, C# Track
- RabbitMQ Installation, Configuration, and Management
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.