Elasticity & Spikability
Understanding Data Flow
(Full Story: Top 10 Uses For A Message Queue)
when you place your order, the cashier marks a coffee cup with your order and places it into a queue. This queue is literally a line of coffee cups on top of the espresso machine. The queue decouples the cashier and barista, letting the cashier continue to take orders even when the barista is backed up. It also allows baristas to start servicing the queue if the store gets busy, without impacting the cashier.
(Full Story: Starbucks Doesn’t Use Two-phase commits)
The results clearly position HornetQ as the performance leader across almost all use cases, and demonstrate it is no longer necessary to purchase expensive proprietary messaging systems to get the very best performance.
(Link: HornetQ – the Performance Leader in Enterprise Messaging – JBoss)
The NMS API (.Net Message Service API) providers a standard C# interface to Messaging Systems. There could be multiple implementations to different providers (including MSMQ).
NMS API currently supports all of the features of JMS in a simple pure C# API and implementation apart from XA.
(Link: Apache ActiveMQ — .NET Message Service)
RabbitMQ is a complete and highly reliable, open source, enterprise messaging system that is based on the open standard, AMQP. It offers exceptional reliability, availability and scalability along with throughput and latency performance that is predictable and consistent. Its compact and lean architecture makes it ideal for use in cloud computing environments where developers are designing tomorrow’s distributed, loosely coupled, highly scalable advanced applications.
(Link: SpringSource Acquires RabbitMQ Cloud Messaging Technology | SpringSource)
(Link: Appcelerator Entourage Documentation | Entourage MQ)
One interesting use of Cucumber is to facilitate integration and communication between different systems. At my last job we had several distributed systems that communicated via a messaging broker. It was very important that the messages sent between the different systems be kept in sync and handled appropriately. For example, System A needed to know the exact message format and queue that System B was going to be using, and vice versa. This type of integration between systems is very error prone and when something goes awry the problems can be very hard to track down. In order to ensure both systems were on the same page we used the exact same Cucumber feature in both systems but had the step definitions verify different things on the respective systems. In this post I’ll walk through a quick example illustrating the tools and techniques we used to do this.
(Link: Using Cucumber to Integrate Distributed Systems and Test Messaging)
So RabbitMQ has the power and reputation and if you want to do some serious queueing, you should be checking it out. With that in mind, Alexis Richardson (from the RabbitMQ team) and I have put together a few resources that will be useful to you (as a Rubyist) if/when you decide to check RabbitMQ out:
(Link: RabbitMQ – A Fast, Reliable Queuing Option for Rubyists)