Let the community know what you think. Share your opinions now!
The durability of the messages. The messages must survive a restart. Then stability, performance, ease of administration.
Security, Stability, Reliability, Scalability and Performance
This can be split into two aspects:
- Features and Functionality
- Quality of Service
- Industry support
Within the first, we would evaluate on:
- Support for different Operating System Platforms
- Availability of API across languages, in order of importance - Java, C#, Python, C++
- Conformance to standards - JMS API availability, Queueing standards
- Availability of different addressing schema and messaging styles - Pub-Sub, Producer-Consumer
- Integration and Inter-operability with different types of middle ware - Application Servers, TP Monitors
- Connector availability across different technologies and platforms - with enterprise applications (CRM, ERP, Warehousing), packaged products - Banking platforms like Globus, Finacle, Telco apps like Amdocs, Arbor/BP etc
- Ability to handle different formats - XML, JSON, SAP iDoc
Against the quality of service parameters, the factors to evaluate are
- Performance and scalability - Volumes in terms of number of queues, no of simultaneous messages per queue, number of subscribers/publishers supported
- Availability of commonly agreed upon performance benchmarks
- Security - Authorized access and access control across queues, confidentiality of messages, encryption capability.
- Reliability - Reliable queueing, recoverability of messaging, ability to cluster and create fail-safe message queues, failure cutover timelines
- Stability - little or no degradation over time the messaging server is in running state
- Availability of administration tools to monitor size and performance of queues, ability to quickly identify and recycle lost or dropped messages, auto-healing capabilities
Against industry support parameters, we would evaluate
- Installed base in large enterprises across various business lines and geographies
- Availability of developers
- Participation in industry standard bodies like TOGAF etc
As an architect, my first response is to ask what are your SLA’s for message delivery? They may determine the characteristics and thresholds of the characteristics when selecting a solution – such as resilience, robustness, throughput, scalability and error handling.
Here are the important capabilities I look for in a messaging engine because I support large mission critical applications with billions of messages a day:
1 - Message reliability and precision: Assured delivery where no message is lost or duplicated. For example, a bank cannot lose a check or process the same check twice.
2 - Scalability: Scales to handle billions (possibly even trillions) of messages a day
3 - Robustness: The messaging engine runs forever with no unscheduled production outage
4 - Universal Connectivity: Connects applications and systems together, locally and globally (on-premise, in private and public clouds). Works across all environments and systems, and is portable across clouds, removing cloud provider lock-in
5 - Secured: Secured messages at rest or in transition
6 - Simple development/APIs: Build and quickly deliver business capabilities with a few and simple APIs
7 - Monitoring, logging, and problem determination: Provide easy to use management and monitoring tools
As in all things software, relevance to task, benefits compared to cost and effort, ease of use for developers, documentation and SAMPLE CODE. You aren't going to find one thing that does everything best - go for maximum reliability and your performance will go down. You would not want a job execution queue running off of Kafka - it fills a different niche.
Stability. Routing. Performance. Acknowledging. Clustering. Availability.
No Loss of data.
scale, ease of use, open support (source AND standards). Avoid lock-in. (and be careful that you aren't drawn into the lock-in pool by marketing.
Reliability, scalability, and performance