com.atomikos.jms
Class TopicSubscriberSessionPool

java.lang.Object
  extended by com.atomikos.jms.MessageConsumerSessionPool
      extended by com.atomikos.jms.TopicSubscriberSessionPool

public class TopicSubscriberSessionPool
extends MessageConsumerSessionPool

Copyright © 2006, Atomikos. All rights reserved. A pool for topic subscribers. For activating multiple threads on the same topic. Upon start, an instance of this class will create a number of concurrent sessions that listen for incoming messages on the same topic. MessageListener instances should be thread-safe if the pool size is larger than one. Note: in general, after start() any changed properties are only effective on the next start() event.

IMPORTANT: the transactional behaviour guarantees redelivery after failures. As a side-effect, this can lead to so-called poison messages: messages whose processing repeatedly fails due to some recurring error (for instance, a primary key violation in the database, a NullPointerException, ...). Poison messages are problematic because they can prevent other messages from being processed, and block the system. Some messaging systems provide a way to deal with poison messages, others don't. In that case, it is up to the registered MessageListener to detect poison messages. The easiest way to detect these is by inspecting the JMSRedelivered header and/or the (sometimes available) JMS property called JMSXDeliveryCount. For instance, if the delivery count is too high then your application may choose to send the message to a dedicated problem queue and thereby avoid processing errors. Whatever you do, beware that messages are sometimes correctly redelivered, in particular after a prior crash of the application.

Topic functionality in this product was sponsored by Webtide.


Constructor Summary
TopicSubscriberSessionPool()
           
 
Method Summary
protected  MessageConsumerSession createSession()
           
 Topic getTopic()
          Gets the topic to listen on.
 TopicConnectionFactoryBean getTopicConnectionFactoryBean()
          Gets the topic connection factory.
 void setTopic(Topic topic)
          Sets the topic to listen on (required).
 void setTopicConnectionFactoryBean(TopicConnectionFactoryBean bean)
          Sets the topic connection factory to use (required).
 
Methods inherited from class com.atomikos.jms.MessageConsumerSessionPool
getAbstractConnectionFactoryBean, getDaemonThreads, getDestination, getExceptionListener, getMessageListener, getMessageSelector, getNotifyListenerOnClose, getPoolSize, getTransactionTimeout, getUser, setAbstractConnectionFactoryBean, setDaemonThreads, setDestination, setExceptionListener, setMessageListener, setMessageSelector, setNotifyListenerOnClose, setPassword, setPoolSize, setTransactionTimeout, setUser, start, stop
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TopicSubscriberSessionPool

public TopicSubscriberSessionPool()
Method Detail

createSession

protected MessageConsumerSession createSession()
Specified by:
createSession in class MessageConsumerSessionPool

getTopic

public Topic getTopic()
Gets the topic to listen on.

Returns:

setTopic

public void setTopic(Topic topic)
Sets the topic to listen on (required).

Parameters:
topic -

setTopicConnectionFactoryBean

public void setTopicConnectionFactoryBean(TopicConnectionFactoryBean bean)
Sets the topic connection factory to use (required).

Parameters:
bean -

getTopicConnectionFactoryBean

public TopicConnectionFactoryBean getTopicConnectionFactoryBean()
Gets the topic connection factory.