|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.jms.support.JmsAccessor org.springframework.jms.support.destination.JmsDestinationAccessor org.springframework.jms.listener.AbstractMessageListenerContainer org.springframework.jms.listener.SimpleMessageListenerContainer
public class SimpleMessageListenerContainer
Message listener container that the plain JMS client API's
MessageConsumer.setMessageListener()
method to
create concurrent MessageConsumers for the specified listeners.
This is the simplest form of a message listener container. It creates a fixed number of JMS Sessions to invoke the listener, not allowing for dynamic adaptation to runtime demands. Its main advantage is its low level of complexity and the minimum requirements on the JMS provider: Not even the ServerSessionPool facility is required.
See the AbstractMessageListenerContainer
javadoc for details on acknowledge modes and transaction options.
For a different style of MessageListener handling, through looped
MessageConsumer.receive()
calls that also allow for
transactional reception of messages (registering them with XA transactions),
see DefaultMessageListenerContainer
. For dynamic adaptation of the active
number of Sessions, consider using
ServerSessionMessageListenerContainer
.
This class requires a JMS 1.1+ provider, because it builds on the
domain-independent API. Use the
SimpleMessageListenerContainer102
subclass for JMS 1.0.2 providers.
MessageConsumer.setMessageListener(javax.jms.MessageListener)
,
DefaultMessageListenerContainer
,
ServerSessionMessageListenerContainer
,
SimpleMessageListenerContainer102
Nested Class Summary |
---|
Nested classes/interfaces inherited from class org.springframework.jms.listener.AbstractMessageListenerContainer |
---|
AbstractMessageListenerContainer.SharedConnectionNotInitializedException |
Field Summary |
---|
Fields inherited from class org.springframework.jms.support.JmsAccessor |
---|
logger |
Constructor Summary | |
---|---|
SimpleMessageListenerContainer()
|
Method Summary | |
---|---|
void |
afterPropertiesSet()
Validates this instance's configuration. |
protected MessageConsumer |
createConsumer(Session session,
Destination destination)
Create a JMS MessageConsumer for the given Session and Destination. |
protected MessageConsumer |
createListenerConsumer(Session session)
Create a MessageConsumer for the given JMS Session, registering a MessageListener for the specified listener. |
protected void |
destroyListener()
Destroy the registered JMS Sessions and associated MessageConsumers. |
protected boolean |
isPubSubNoLocal()
Return whether to inhibit the delivery of messages published by its own connection. |
protected void |
registerListener()
Creates the specified number of concurrent consumers, in the form of a JMS Session plus associated MessageConsumer. |
void |
setConcurrentConsumers(int concurrentConsumers)
Specify the number of concurrent consumers to create. |
void |
setPubSubNoLocal(boolean pubSubNoLocal)
Set whether to inhibit the delivery of messages published by its own connection. |
void |
setTaskExecutor(TaskExecutor taskExecutor)
Set the Spring TaskExecutor to use for executing the listeners. |
protected boolean |
sharedConnectionEnabled()
Always use a shared JMS Connection. |
Methods inherited from class org.springframework.jms.support.destination.JmsDestinationAccessor |
---|
getDestinationResolver, isPubSubDomain, resolveDestinationName, setDestinationResolver, setPubSubDomain |
Methods inherited from class org.springframework.jms.support.JmsAccessor |
---|
convertJmsAccessException, getConnectionFactory, getSessionAcknowledgeMode, isSessionTransacted, setConnectionFactory, setSessionAcknowledgeMode, setSessionAcknowledgeModeName, setSessionTransacted |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public SimpleMessageListenerContainer()
Method Detail |
---|
public void setPubSubNoLocal(boolean pubSubNoLocal)
TopicSession.createSubscriber(javax.jms.Topic, String, boolean)
protected boolean isPubSubNoLocal()
public void setConcurrentConsumers(int concurrentConsumers)
public void setTaskExecutor(TaskExecutor taskExecutor)
Specify a TaskExecutor for integration with an existing thread pool, executing the listener with a received message in a different thread - taken from the thread pool, rather than blocking the JMS provider.
setConcurrentConsumers(int)
,
SimpleAsyncTaskExecutor
,
WorkManagerTaskExecutor
public void afterPropertiesSet()
afterPropertiesSet
in interface InitializingBean
afterPropertiesSet
in class AbstractMessageListenerContainer
AbstractMessageListenerContainer.initialize()
protected final boolean sharedConnectionEnabled()
sharedConnectionEnabled
in class AbstractMessageListenerContainer
AbstractMessageListenerContainer.getSharedConnection()
protected void registerListener() throws JMSException
registerListener
in class AbstractMessageListenerContainer
JMSException
- if registration failedcreateListenerConsumer(javax.jms.Session)
protected MessageConsumer createListenerConsumer(Session session) throws JMSException
session
- the JMS Session to work on
JMSException
- if thrown by JMS methodsAbstractMessageListenerContainer.executeListener(javax.jms.Session, javax.jms.Message)
protected void destroyListener() throws JMSException
destroyListener
in class AbstractMessageListenerContainer
JMSException
- if destruction failedprotected MessageConsumer createConsumer(Session session, Destination destination) throws JMSException
This implementation uses JMS 1.1 API.
session
- the JMS Session to create a MessageConsumer fordestination
- the JMS Destination to create a MessageConsumer for
JMSException
- if thrown by JMS API methods
|
The Spring Framework | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |