ActiveMQ 5.1 Supports JMS Destination Monitoring and MSMQ Bridge
Apache ActiveMQ, an open source provider of enterprise messaging services, recently released version 5.1 which includes improvements in stability and performance of the message broker product. This version also includes support for priority message ordering and a Microsoft Message Queue (MSMQ) to ActiveMQ Bridge with the new msmq transport component.
There are also improvements in the monitoring module of ActiveMQ container. A new DestinationSource class was added to access the available Queues or Topics or listen to Queues/Topics being created or deleted in the container. There is a new API to help end users view available destinations and query them to find JMS statistics such as active queue count, queue depth, number of messages etc.
Other new features in the latest version are:
- New API to poll for messages without requiring a JMS Session and consumer.
- Support for more graceful handling of timeouts within MessageProducer class by adding a new sendTimeout property.
- Add the option for a backup channel that is already connected for the Failover transport. Backup channels are dynamically added when the primary transport fails.
- ActiveMQ configuration can now validate against an XSD which means that it can be embedded in a Spring configuration file.
The administration console JAR file (activemq-console.jar) can now be deployed as an OSGi bundle so it can be re-used in Apache ServiceMix open source ESB container. The new version of ActiveMQ also addressed several bugs some of which occurred in high load situations and others were related to memory leaks and performance issues.
ActiveMQ version 5.0 released last December had some significant new features as listed below:
- AMQ Message Store, which is an embeddable transactional message storage that can be used for fast and reliable persistence.
- Message Cursors are part of a new memory model that allows messages to be paged in from storage when space is available (using Store cursors for persistent messages). This feature was added to address a common problem in previous versions of ActiveMQ with running out of RAM buffer when using non-persistent messaging.
- Blob Messages: There is a new BlobMessage API for handling Binary Large OBjects (BLOBs) in JMS messages sent between the client and ActiveMQ server.
- Mirrored Queues: A mirrored queue feature was added to make it easy to monitor the messages that flow between the producers and consumers on a specified queue in ActiveMQ container. These mirrored queues act as a zero-configuration Wire Tap on all of the queues inside the Message Broker. When enabled, mirrored queues cause every message sent to a Queue to also be sent to a Topic of a similar name; so that the developers and web administrators who are interested in watching message exchanges on a queue can consume from the mirrored queue topic.
- Producer Flow Control: The developers can individually flow control each producer on a shared JMS connection without having to suspend the entire connection.
ActiveMQ is based on the Java Message Service (JMS) Version 1.1 specification. It also has integration with Spring framework so ActiveMQ container can be used as an embedded broker using Spring. More documentation on getting started with version 5 and examples on how to use ActiveMQ in enterprise applications is available on their website.
Apache Camel, a sub-project of ActiveMQ, is used to manage mediation and routing activities for processes running on ActiveMQ container. Camel, a Spring based Integration Framework, implements the Enterprise Integration Patterns allowing the developers to configure routing and mediation rules in either a Java based Domain Specific Language (or Fluent API), Scala DSL or Spring XML configuration files.
That's great news!
It is a great achievement, nevertheless.
Any stats on how it performs when compared to other providers?
Re: That's great news!
I guess the big deal is that this is an Open Source project that anyone can freely use and enhance. ActiveMQ lowers the barrier of entry for folks who a are new to messaging and want to get started with a great full featured product who has a huge community behind it.
Also it's not mentioned in the article above, but you can access the messaging system from multiple languages using native clients. It's especially easy to used from all the popular scripting languages like Ruby, Python, and PHP. And I think this something that equally exciting, since most the messaging vendors have traditionally ignored them.
I don't want to discourage anyone here, but most of the new features listed for this new release were already implemented in most of the commercial products (TIBCO for sure) for a while (some 4 years ago).
Martin Thompson Jul 27, 2014