InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

ActiveMQ 5.1 Supports JMS Destination Monitoring and MSMQ Bridge

Posted by Srini Penchikala on May 26, 2008

Sections
Operations & Infrastructure,
Enterprise Architecture,
Development,
Architecture & Design
Topics
Java ,
Messaging ,
Open Source
Tags
MSMQ ,
ActiveMQ ,
JMS

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.

Srini Penchikala currently works as Security Architect and has 17 yrs of experience in software product management.

That's great news! by murali kosaraju Posted
Re: That's great news! by Hiram Chirino Posted
  1. Back to top

    That's great news!

    by murali kosaraju

    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).




    It is a great achievement, nevertheless.
    Any stats on how it performs when compared to other providers?




    mkosaraju

  2. Back to top

    Re: That's great news!

    by Hiram Chirino

    Hi Murali,

    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).

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.