JMS 2.0 has the feature of 'shared topic subscriptions', meaning two subscribers share a subscription and only one of them processes the messages. This is useful for situations where you need a pub-sub mechanism yet you want to have multiple instances of a single listener for failover/load balancing purposes, without having to filter out "duplicates" yourself in application code.
More info on shared topic subscriptions: http://www.oracle.com/technetwork/articles/java/jms2messaging-1954190.html
This is already implemented in Spring JMS:
It would be useful to have this property exposed on the publish-subcribe-channel as well.