Thursday, December 19, 2013
Christmas time at Packt Books
The $5 eBook Bonanza is here! Treat yourself to the eBook or Video of your choice for just $5 and get as many as you like until January 3rd 2014. This is a great time to add to your personal library and start learning some new tech skills. Its also a great time to grab a copy of my ActiveMQ book at Packt.
Wednesday, October 16, 2013
Get 50% Off of my Instant Apache ActiveMQ book plus many more
Packt Publishing is giving everyone
the chance to explore its full range of over 1600 DRM-free eBooks
this Columbus Day at a massive 50% off at www.packtpub.com,
for 4 whole days. Customers simply use the code COL50 in their
cart – as many times as they like until Thursday October 17th. Use the following link to find out more. http://bit.ly/1bqvB29
Monday, September 9, 2013
ActiveMQ-CPP v3.8.0 Released
Its official, AcitveMQ-CPP v3.8.0 has now been released.
This is a new patch release of ActiveMQ-CPP which contains bug fixes for issues that were found since v3.7.1 was released and also some new features and build improvements for Windows users. The windows project files are moving on to Visual Studio v2010 from this point on. We kept around the vs2008 project files for now but will remove them in a later release just to try and make the transition a bit easier.
Here's a list of what's been fixed or added in this release.
* 3.7.0 does not compile with gcc-4.4.7 on CentOS-6
* APR-Util header include missed in latest release.
* CMS FailoverTransport Leaks Socket Descriptors
* closing a connection stalled in start because of failover should
stop the transport safely.
* Compilation Error Fix for Sun Studio under Solaris 10
* Exception lifetime confusion can cause the application to crash
* Connection didn't switch to the slave broker when the master broker
is down
* Committing a session with a deleted consumer causes access violation
* Compilation of 3.7.0 fails for Linux systems (Redhat 5.8 and SuSE
SLES 10)
* Client doesn't work on Linux Red Hat 6.4 systems, fails when setting
thread priority
* Exception "attempt to unlock read lock, not locked by current
thread" when doing performance testing
* For SSL connections ensure the SNI field is set.
* Can't send to temporary queues created by name
* Added Visual Studio 2010 project files for the project.
* Added Destination Source events based listener interfaces to the CMS API.
This is a new patch release of ActiveMQ-CPP which contains bug fixes for issues that were found since v3.7.1 was released and also some new features and build improvements for Windows users. The windows project files are moving on to Visual Studio v2010 from this point on. We kept around the vs2008 project files for now but will remove them in a later release just to try and make the transition a bit easier.
Here's a list of what's been fixed or added in this release.
* 3.7.0 does not compile with gcc-4.4.7 on CentOS-6
* APR-Util header include missed in latest release.
* CMS FailoverTransport Leaks Socket Descriptors
* closing a connection stalled in start because of failover should
stop the transport safely.
* Compilation Error Fix for Sun Studio under Solaris 10
* Exception lifetime confusion can cause the application to crash
* Connection didn't switch to the slave broker when the master broker
is down
* Committing a session with a deleted consumer causes access violation
* Compilation of 3.7.0 fails for Linux systems (Redhat 5.8 and SuSE
SLES 10)
* Client doesn't work on Linux Red Hat 6.4 systems, fails when setting
thread priority
* Exception "attempt to unlock read lock, not locked by current
thread" when doing performance testing
* For SSL connections ensure the SNI field is set.
* Can't send to temporary queues created by name
* Added Visual Studio 2010 project files for the project.
* Added Destination Source events based listener interfaces to the CMS API.
Tuesday, July 23, 2013
Coming in ActiveMQ 5.9 a new way to abort slow consumers.
The topic of how to deal with a slow consumer in ActiveMQ comes up on the mail list from time to time. In the current releases there is a strategy class that allows you to configure a time interval after which a slow consumer is closed (some nice documentation can be found here). The AbortSlowConsumerStrategy detects a consumer is slow by looking at its prefetch buffer and checking if its been to full for to long. When the consumer is aborted the messages that were in its prefetch buffer can then be sent on to other consumers on the same destination.
The AbortSlowConsumerStrategy works well when you have consumers whose prefetch limit is set to a value greater than one, but for those cases where you've set a value of zero or one the consumer may never get marked as slow by the broker so the strategy might never kick in to abort the slow consumers.
To solve the problem of slow consumers with small prefetch values we've introduced the AbortSlowAckConsumerStrategy. This strategy works by checking the time since a consumer last acknowledged a message as apposed to the time that the consumer has had a full prefetch buffer. The strategy will poll all the consumers of destination at a configurable rate to determine if the consumer is slow and if the consumer meets the configured criteria for abort then it will be given the boot and any prefetched messages will be redispatched.
The AbortSlowAckConsumerStrategy is configured in the XML configuration file as follows:
This configuration adds the AbortSlowAckConsumerStrategy with default options and applies it only to Topic consumers, for Queues you just need to replace the word 'topic' with 'queue' in the policy entry.
There are various options that can be set on the strategy to determine when it aborts a slow consumer.
If you read through the options above you should notice that it's possible to use this strategy not only to abort slow consumers that are receiving messages from the broker but also you can use this as a way to abort any consumer after a specified time interval. To accomplish this all you need to do is set the ignoreIdleConsumers option to false and the strategy will treat any consumer that hasn't acknowledged a message since the configured maxTimeSinceLastAck regardless of whether its had a message dispatched to it or not.
Lets look at an example of how to abort any topic consumer that hasn't acknowledged a message in the last 60 seconds:
The AbortSlowConsumerStrategy works well when you have consumers whose prefetch limit is set to a value greater than one, but for those cases where you've set a value of zero or one the consumer may never get marked as slow by the broker so the strategy might never kick in to abort the slow consumers.
To solve the problem of slow consumers with small prefetch values we've introduced the AbortSlowAckConsumerStrategy. This strategy works by checking the time since a consumer last acknowledged a message as apposed to the time that the consumer has had a full prefetch buffer. The strategy will poll all the consumers of destination at a configurable rate to determine if the consumer is slow and if the consumer meets the configured criteria for abort then it will be given the boot and any prefetched messages will be redispatched.
The AbortSlowAckConsumerStrategy is configured in the XML configuration file as follows:
This configuration adds the AbortSlowAckConsumerStrategy with default options and applies it only to Topic consumers, for Queues you just need to replace the word 'topic' with 'queue' in the policy entry.
There are various options that can be set on the strategy to determine when it aborts a slow consumer.
Table 2. Settings for Abort Slow Consumer Strategy
Attribute | Default | Description |
---|---|---|
maxTimeSinceLastAck | 30000 | Specifies the amount of time that must elapse since the last message acknowledge before a consumer is marked as slow. |
ignoreIdleConsumers | true | Specifies whether the time since last acknowledge is applied to consumer that has no dispatched messages. If set false this strategy can be used to abort any consumer after the time since last acknowledge interval has expired.
|
maxSlowCount | -1 | Specifies the number of times a consumer can be considered slow before it is
aborted. -1 specifies that a consumer can be considered
slow an infinite number of times. |
maxSlowDuration | 30000 | Specifies the maximum amount of time, in milliseconds, that a consumer can be continuously slow before it is aborted. |
checkPeriod | 30000 | Specifies, in milliseconds, the time between checks for slow consumers. |
abortConnection | false | Specifies whether the broker forces the consumer connection to close. The
default value specifies that the broker will send a message to the consumer
requesting it to close its connection. true
specifies that the broker will automatically close the consumer's
connection. |
If you read through the options above you should notice that it's possible to use this strategy not only to abort slow consumers that are receiving messages from the broker but also you can use this as a way to abort any consumer after a specified time interval. To accomplish this all you need to do is set the ignoreIdleConsumers option to false and the strategy will treat any consumer that hasn't acknowledged a message since the configured maxTimeSinceLastAck regardless of whether its had a message dispatched to it or not.
Lets look at an example of how to abort any topic consumer that hasn't acknowledged a message in the last 60 seconds:
Friday, July 12, 2013
ActiveMQ-CPP v3.7.1 Released
This is a new patch release of ActiveMQ-CPP, a lot of bugs have been
fixed that were found in the v3.7.0 release which should reduce memory
consumption and improve overall stability. Several compilation fixes
were made as well so things should be better on a number of platforms.
Fixes of note:
- 3.7.0 does not compile with gcc-4.4.7 on CentOS-6
- APR-Util header include missed in latest release.
- CMS FailoverTransport Leaks Socket Descriptors
- closing a connection stalled in start because of failover should stop the transport safely.
- Compilation Error Fix for Sun Studio under Solaris 10
- Exception lifetime confusion can cause the application to crash
- Connection didn't switch to the slave broker when the master broker is down
- Commiting a session with a deleted consumer causes access violation
- Compilation of 3.7.0 fails for Linux systems (Redhat 5.8 and SuSE SLES 10)
- Cient doesn't work on Linux Red Hat 6.4 systems, fails when setting thread priority
Friday, June 7, 2013
Apache.NMS.ActiveMQ v1.6.0 Released
After almost a year since the last release the Apache.NMS.ActiveMQ 1.6.0 Release bundle is now available. We spent a lot of time on this release adding in new features and fixing bugs. You'll find many features added that were previously only available in the Java client such as optimized acknowledge and priority backups for the Failover Transport.
New in this release:
* Adds support for non-blocking redelivery.
* Supports priority backups for Failover transport.
* Supports an Optimized Ack mode for MessageConsumers.
* Adds Message Audits to prevent duplicate deliveries on Failover.
* Implements the ISession Recover method.
* Adds support for purging locally created temp destinations.
* Properly handles cluster client re-balancing in Failover Transport.
* Plus a lot more fixes and stability improvements.
This release is based on the Apache.NMS API v1.6.0 and runs on .NET frameworks 2.0+ and Mono 2.0+.
The binaries and source bundles for the Release Candidate can be found here:
The list of issues resolved is here:
There are release binaries and debug binaries (with PDBs) provided. The binary ZIP files include pre-built assemblies for all of the platforms that are supported.
New in this release:
* Adds support for non-blocking redelivery.
* Supports priority backups for Failover transport.
* Supports an Optimized Ack mode for MessageConsumers.
* Adds Message Audits to prevent duplicate deliveries on Failover.
* Implements the ISession Recover method.
* Adds support for purging locally created temp destinations.
* Properly handles cluster client re-balancing in Failover Transport.
* Plus a lot more fixes and stability improvements.
This release is based on the Apache.NMS API v1.6.0 and runs on .NET frameworks 2.0+ and Mono 2.0+.
The binaries and source bundles for the Release Candidate can be found here:
The list of issues resolved is here:
There are release binaries and debug binaries (with PDBs) provided. The binary ZIP files include pre-built assemblies for all of the platforms that are supported.
Thursday, May 30, 2013
Win A Free Copy of Packt's Instant Apache ActiveMQ Messaging Application Development How-to!!
I am pleased to announce that I have teamed up with Packt Publishing
and we are organizing a giveaway especially for you. All you need to do
is just comment below the post and win a free e-copy of
Instant Apache ActiveMQ Messaging Application Development How-to.
Two lucky winners stand a chance to win an e-copy of the book. Keep
reading to find out how you can be one of the Lucky One.
Overview of Instant Apache ActiveMQ Messaging Application Development How-to
- Learn something new in an Instant! A short, fast, focused guide delivering immediate results.
- Learn how to use the JMS API
- Explore advanced messaging features in ActiveMQ
- Useful information on common pitfalls new developers often encounter
How to Enter?
Simply
post your expectations from this book in comments section below. You
could be one of the 2 lucky participants to win the copy.
DeadLine:
The
contest will close on 06/14/2013 . Winners will be contacted by email,
so be sure to use your real email address when you comment!
Tuesday, May 28, 2013
New ActiveMQ Book Published.
Recently finished work on a new book for the beginning ActiveMQ user, "Instant Apache ActiveMQ Messaging Application Development How-to" published by Packt Publishing. The book is a fast paced walk through as the basic skills needed to work with Apache ActiveMQ. At 78 pages its a quick read and provides some helpful tips for some of the most common questions asked by those new to working with ActiveMQ.
Some things that are covered in this book.
Some things that are covered in this book.
- Install and run an ActiveMQ Broker
- Set up a basic application developer environment for ActiveMQ using Apache Maven
- Write basic JMS applications using topics and queue to broadcast events
- Perform Request and Response style operations over JMS
- Write applications that embed ActiveMQ brokers directly into their own JVM
- Utilize ActiveMQ's fault tolerant features to develop robust client applications
- How to delay message sending using ActiveMQ's built in scheduler
Monday, May 20, 2013
ActiveMQ-CPP v3.7.0 Released
This is a new Major release of ActiveMQ-CPP which contains bug fixes for
issues that were found since v3.6.0 was released along with several new
features which have been requested by a number of users.
* Added support of Optimized Acknowledge
* Added support for Non-blocking redelivery.
* Removed dependence on the APR-Util library (Still needs the main APR lib).
* Supports priority backups for Failover Transport
* Supports the cluster rebalancing feature.
* Message Audits to filter duplicates on Failover.
* A lot of other little bug fixes and improvements.
Building the project should be a lot simpler now as you only need to have APR v1.3+ installed, this is a big plus for Windows users as building the APR-Util libs on Windows is tricky at best.
* Added support of Optimized Acknowledge
* Added support for Non-blocking redelivery.
* Removed dependence on the APR-Util library (Still needs the main APR lib).
* Supports priority backups for Failover Transport
* Supports the cluster rebalancing feature.
* Message Audits to filter duplicates on Failover.
* A lot of other little bug fixes and improvements.
Building the project should be a lot simpler now as you only need to have APR v1.3+ installed, this is a big plus for Windows users as building the APR-Util libs on Windows is tricky at best.
Monday, March 11, 2013
ActiveMQ-CPP v3.6.0 Released
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 leak fixing this release also adds support for priority backups and better cluster re-balancing support to the failover transport.
You can find out more on the download page along with newly updated API docs for this release.
You can find out more on the download page along with newly updated API docs for this release.
Subscribe to:
Posts (Atom)