You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by js...@apache.org on 2007/03/28 20:27:53 UTC

svn commit: r523432 - in /activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms: ConsumerType.java JmsConfiguration.java JmsEndpoint.java

Author: jstrachan
Date: Wed Mar 28 11:27:52 2007
New Revision: 523432

URL: http://svn.apache.org/viewvc?view=rev&rev=523432
Log:
allowd the different message listener containers to be configured; also added helper methods to create consumers & producers using injected spring resources

Added:
    activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/ConsumerType.java   (with props)
Modified:
    activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
    activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java

Added: activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/ConsumerType.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/ConsumerType.java?view=auto&rev=523432
==============================================================================
--- activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/ConsumerType.java (added)
+++ activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/ConsumerType.java Wed Mar 28 11:27:52 2007
@@ -0,0 +1,8 @@
+package org.apache.camel.component.jms;
+
+/**
+ * @version $Revision$
+ */
+public enum ConsumerType {
+    Simple, Default, ServerSessionPool
+}

Propchange: activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/ConsumerType.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/ConsumerType.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/ConsumerType.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java?view=diff&rev=523432&r1=523431&r2=523432
==============================================================================
--- activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java (original)
+++ activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsConfiguration.java Wed Mar 28 11:27:52 2007
@@ -24,9 +24,12 @@
 import org.springframework.jms.core.JmsTemplate102;
 import org.springframework.jms.listener.AbstractMessageListenerContainer;
 import org.springframework.jms.listener.DefaultMessageListenerContainer;
+import org.springframework.jms.listener.DefaultMessageListenerContainer102;
 import org.springframework.jms.listener.SimpleMessageListenerContainer;
+import org.springframework.jms.listener.SimpleMessageListenerContainer102;
 import org.springframework.jms.listener.serversession.ServerSessionFactory;
 import org.springframework.jms.listener.serversession.ServerSessionMessageListenerContainer;
+import org.springframework.jms.listener.serversession.ServerSessionMessageListenerContainer102;
 import org.springframework.jms.support.converter.MessageConverter;
 import org.springframework.transaction.PlatformTransactionManager;
 
@@ -40,6 +43,7 @@
     protected static final String TRANSACTED = "TRANSACTED";
     private ConnectionFactory connectionFactory;
     private ConnectionFactory producerConnectionFactory;
+    private ConsumerType consumerType = ConsumerType.Default;
     private boolean useVersion102;
     private boolean autoStartup;
     private boolean acceptMessagesWhileStopping;
@@ -501,12 +505,27 @@
         this.priority = priority;
     }
 
+    public ConsumerType getConsumerType() {
+        return consumerType;
+    }
+
+    public void setConsumerType(ConsumerType consumerType) {
+        this.consumerType = consumerType;
+    }
+
     // Implementation methods
     //-------------------------------------------------------------------------
     protected AbstractMessageListenerContainer chooseMessageListenerContainerImplementation() {
-        // TODO use an enum to auto-switch container types?
-
-        //return new SimpleMessageListenerContainer();
-        return new DefaultMessageListenerContainer();
+        // TODO we could allow a spring container to auto-inject these objects?
+        switch (consumerType) {
+            case Simple:
+                return isUseVersion102() ? new SimpleMessageListenerContainer102() : new SimpleMessageListenerContainer();
+            case ServerSessionPool:
+                return isUseVersion102() ? new ServerSessionMessageListenerContainer102() : new ServerSessionMessageListenerContainer();
+            case Default:
+                return isUseVersion102() ? new DefaultMessageListenerContainer102() : new DefaultMessageListenerContainer();
+            default:
+                throw new IllegalArgumentException("Unknown consumer type: " + consumerType);
+        }
     }
 }

Modified: activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java?view=diff&rev=523432&r1=523431&r2=523432
==============================================================================
--- activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java (original)
+++ activemq/camel/trunk/camel-jms/src/main/java/org/apache/camel/component/jms/JmsEndpoint.java Wed Mar 28 11:27:52 2007
@@ -22,6 +22,7 @@
 import org.apache.camel.Producer;
 import org.apache.camel.impl.DefaultEndpoint;
 import org.springframework.jms.core.JmsOperations;
+import org.springframework.jms.core.JmsTemplate;
 import org.springframework.jms.listener.AbstractMessageListenerContainer;
 
 import javax.jms.Message;
@@ -45,12 +46,35 @@
 
     public Producer<JmsExchange> createProducer() throws Exception {
         JmsOperations template = configuration.createJmsOperations(pubSubDomain, destination);
+        return createProducer(template);
+    }
+
+    /**
+     * Creates a producer using the given template
+     */
+    public Producer<JmsExchange> createProducer(JmsOperations template) throws Exception {
+        if (template instanceof JmsTemplate) {
+            JmsTemplate jmsTemplate = (JmsTemplate) template;
+            jmsTemplate.setPubSubDomain(pubSubDomain);
+            jmsTemplate.setDefaultDestinationName(destination);
+        }
         return startService(new JmsProducer(this, template));
     }
 
     public Consumer<JmsExchange> createConsumer(Processor<JmsExchange> processor) throws Exception {
-
         AbstractMessageListenerContainer listenerContainer = configuration.createMessageListenerContainer();
+        return createConsumer(processor, listenerContainer);
+    }
+
+    /**
+     * Creates a consumer using the given processor and listener container
+     *
+     * @param processor the processor to use to process the messages
+     * @param listenerContainer the listener container
+     * @return a newly created consumer
+     * @throws Exception if the consumer cannot be created
+     */
+    public Consumer<JmsExchange> createConsumer(Processor<JmsExchange> processor, AbstractMessageListenerContainer listenerContainer) throws Exception {
         listenerContainer.setDestinationName(destination);
         listenerContainer.setPubSubDomain(pubSubDomain);