Friday, December 21, 2012

ActiveMQ-CPP v3.5.0 Released

Just in time for Christmas. 

This is a new Major release of ActiveMQ-CPP with several new APIs and
internal changes meant to improve overall stability of the C++ client.
Besides a large amount of bug fixing and memory fixing this release also
features a lot of new features in the CMS API:

* Added Message Transformation capabilities for incoming and outgoing
messages.
* You can now query for the type of a Message property so you can choose
the best getter method.
* MapMessage and StreamMessage object now expose an API to find out what
type a value is before you try to get a value using one of the getter
methods.
* Polling consumers now can set a Message available listener.
* Stomp clients can configure the destination prefixes for the
Destination types (Queues, Topics...).
* StreamMessage now has a reset method to allow object reuse.
* Added an AdvisorySupport class to make dealing with advisory topics
easier.
* Added support for non-blocking sends to Message Producers.

You can get the source bundle from the v3.5.0 release page.

Monday, June 4, 2012

ActiveMQ-CPP version 3.4.3 released.

Its official, AcitveMQ-CPP v3.4.3 has now been released. 

This is a bug fix release of the ActiveMQ-CPP client which includes some
fixes since the v3.4.2 release.  .

Some highlights for this release:

* Fixed a memory leak in the TcpTransport that could occur if the connection was broken during the initial connect phase.
* Fixed a memory leak that could occur when producers in transactions were committing and the connection was interrupted. 
* Reduced memory overhead of saving transaction state when the failover transport is being used.

You can download the source package from here:

Tuesday, May 8, 2012

What's new for Stomp in ActiveMQ 5.6

Version 5.6 of ActiveMQ has been a long time coming but its finally here and brings with it some great new features.  In this post I'm going to cover what's new for those of you using STOMP clients to communicate with ActiveMQ.

STOMP v1.1 Support

Probably the biggest change in ActiveMQ 5.6 is that we now support STOMP v1.1 but that's not the only thing we've done, there's plenty of new goodies even if you are stuck using a STOMP v1.0 based client.  With the addition of STOMP 1.1 support STOMP you get:
  • protocol negotiation to allow for interoperability between clients and servers supporting successive versions of STOMP
  • heartbeats to allow for reliable detection of disconnecting clients and servers
  • NACK frames for negative acknowledgment of message receipt
  • Support for virtual hosting.
I won't spend a lot of time rehashing the STOMP 1.1 spec here as its laid out quite nicely in the protocol specification page here.

Other New STOMP Features and Fixes

Of course support for STOMP 1.1 isn't the only thing we added to our STOMP support, there's several other new goodies in there as well.  Lets take a look at what else you can now do with the STOMP Transport in ActiveMQ 5.6. 

Queue Browsing

A normal subscription on a queue will consume messages so that no other subscription will get a copy of the message. If you want to browse all the messages on a queue in a non-destructive fashion, you can create browsing subscription. To make a a browsing subscription, just add the browser:true header to the SUBSCRIBE frame. For example:

SUBSCRIBE
id:mysub
browser:true
destination:/queue/foo

^@
 
Once the broker sends a browsing subscription the last message in the queue, it will send the subscription a special “end of browse” message to indicate browsing has completed and that the subscription should not expect any more messages. The “end of browse” message will have a browser:end header set. Example:

MESSAGE
subscription:mysub
destination:
message-id:
browser:end

^@
 
The Queue browsing support works for both STOMP 1.0 and STOMP 1.1 clients so you don't need to upgrade your client in order to take advantage of this new feature.

Message Selectors and Numeric Values

Prior to the 5.6 release you couldn't specify a numeric selector expression on a STOMP subscription, this has now been fixed so you are free to subscribe to a destination via STOMP using selectors such as the following:

SUBSCRIBE
id:mysub
selector:someId = 42
destination:/queue/foo

^@
 
With this subscription any JMS Message's sent to this destination with an numeric message property named 'someId' and a value of 42 will be picked up as expected.

STOMP+NIO+SSL Transport

In 5.6 we've added NIO+SSL transports for both Openwire and STOMP clients which allow you to connect large numbers of SSL based STOMP clients to a single broker instance.  You can configure a STOMP+NIO+SSL TransportConnector in you broker as follows:


    transportconnector name="stomp+nio+ssl" uri="stomp+nio+ssl://0.0.0.0:61616"  
  

STOMP 1.0 default heartbeat configuration

Unlike STOMP 1.1 the original STOMP 1.0 does not provide for an inactivity monitor since there was no defined hear-beat capability.  A client connect that stays idle will remain active on the broker indefinitely.  With STOMP 1.1, the inactivity monitor has come into play in response to the heart-beat header.   Since not all your clients might not be upgraded to STOMP 1.1 right away we added the capability to specify a default heart-beat value to the transportConnector so that you can still timeout idle STOMP connections.  You can setup this default value on your connector as follows:

   stomp://0.0.0.0:0?transport.defaultHeartBeat=5000,0

In the absence of a heartbeat header, as in the STOMP 1.0 case, this default value would cause an InactivityMonitor with read check interval of 5 seconds to be installed on each new broker stomp transport connection.  Any client that remains inactive (sends no messages) for more than 5 seconds will have their broker connection closed.  You should tune this value based on the exceptions of the behavior of you clients.

Wrap Up

I've tried to just quickly touch on some of the enhancements that we've made for those of you using STOMP clients in ActiveMQ v5.6.  There's a ton of other new and improved features in 5.6 as well given that there were some 435 issues resolved for this release.  I encourage you to download this new release and take it for a spin.  If can ask questions on our mailing list if you run into trouble. 

Friday, May 4, 2012

Apache.NMS.ActiveMQ v1.5.5 Released

Announcing the official release of Apache.NMS.ActiveMQ v1.5.5.  We put a lot of work into this one fixing bugs that were found since the 1.5.4 release.  There was an additional issue with advisory monitoring and Temporary Destinations that was resolved in this release along with a couple other minor bugs.  Also some improvements to the failover transport are included.  Highlights of the things in this release:


* Sending to non-existent temp queue causes consumer to shutdown
* Consumers frequently fail to reconnect after broker outage/failover.
* FailoverTransport doesn't trigger a reconnect on send of a Tracked Command.
* ActiveMQ.NMS hangs sometimes due to concurrency problems while accessing static IDictionary
* Apache.NMS.ActiveMQ discovery protocol throwing ArgumentOutOfRangeException

Grab in from the Apache.NMS.ActiveMQ downloads page.

Saturday, April 28, 2012

ActiveMQ-CPP v3.4.2 Released

Its official, AcitveMQ-CPP v3.4.2 has now been released. 

This is a bug fix release of the ActiveMQ-CPP client which includes some
fixes since the v3.4.1 release.  A couple important failover fixes in
this one so grab it if you are on an earlier version.

Some highlights for this release:

* Some build issues on various platforms were resolved.
* A problem with setting the username / password from the Connection
Factory was fixed.
* A problem with expired messages and DLQ processing was addressed.
* An issue with the failover transport and hangs in Connection start()
was fixed.
* A couple of race conditions on Connection close() were addressed.

You can download the source package from here:

Wednesday, April 18, 2012

Apache.NMS.ActiveMQ v1.5.4 released.

Announcing the official release of Apache.NMS.ActiveMQ v1.5.4.  We put a lot of work into this one fixing bugs that were found since the 1.5.3 release.  There was an issue with advisory monitoring and Temporary Destinations that was resolved in this release along with a couple other minor bugs.

Grab in from the Apache.NMS.ActiveMQ downloads page.

Saturday, January 28, 2012

Apache.NMS.ActiveMQ v1.5.3 released.

Today marks the official release of Apache.NMS.ActiveMQ v1.5.3.  We put a lot of work into this one fixing bugs that were found since the 1.5.2 release.  Some really nice performance fixes in this release along with some thread leaks and concurrency errors.

For anyone on v1.5.2 I'd definitely recommend upgrading, there were a couple issues that should make failover recovery of consumer much more reliable. 

Grab in from the Apache.NMS.ActiveMQ downloads page.