/* * Copyright 2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.springframework.integration.jms.dsl; import java.util.concurrent.Executor; import org.springframework.jms.listener.DefaultMessageListenerContainer; import org.springframework.transaction.PlatformTransactionManager; import org.springframework.util.backoff.BackOff; /** * A {@link DefaultMessageListenerContainer} specific {@link JmsListenerContainerSpec} extension. * * @author Artem Bilan * @since 5.0 */ public class JmsDefaultListenerContainerSpec extends JmsListenerContainerSpec<JmsDefaultListenerContainerSpec, DefaultMessageListenerContainer> { JmsDefaultListenerContainerSpec() throws Exception { super(DefaultMessageListenerContainer.class); } /** * Specify an {@link Executor}. * @param taskExecutor the {@link Executor} to use. * @return current {@link JmsDefaultListenerContainerSpec}. * @see DefaultMessageListenerContainer#setTaskExecutor(Executor) */ public JmsDefaultListenerContainerSpec taskExecutor(Executor taskExecutor) { this.target.setTaskExecutor(taskExecutor); return this; } /** * Specify a {@link BackOff}. * @param backOff the {@link BackOff} to use. * @return current {@link JmsDefaultListenerContainerSpec}. * @see DefaultMessageListenerContainer#setBackOff(BackOff) */ public JmsDefaultListenerContainerSpec backOff(BackOff backOff) { this.target.setBackOff(backOff); return this; } /** * Specify a recovery interval. * @param recoveryInterval the recovery interval to use. * @return current {@link JmsDefaultListenerContainerSpec}. * @see DefaultMessageListenerContainer#setRecoveryInterval(long) */ public JmsDefaultListenerContainerSpec recoveryInterval(long recoveryInterval) { this.target.setRecoveryInterval(recoveryInterval); return this; } /** * Specify the level of caching that this listener container is allowed to apply, * in the form of the name of the corresponding constant: e.g. "CACHE_CONNECTION". * @param constantName the cache level constant name. * @return current {@link JmsDefaultListenerContainerSpec}. * @see #cacheLevel(int) * @see DefaultMessageListenerContainer#setCacheLevelName(String) */ public JmsDefaultListenerContainerSpec cacheLevelName(String constantName) { this.target.setCacheLevelName(constantName); return this; } /** * Specify the level of caching that this listener container is allowed to apply. * @param cacheLevel the level of caching. * @return current {@link JmsDefaultListenerContainerSpec}. * @see DefaultMessageListenerContainer#setCacheLevel(int) */ public JmsDefaultListenerContainerSpec cacheLevel(int cacheLevel) { this.target.setCacheLevel(cacheLevel); return this; } /** * The concurrency to use. * @param concurrency the concurrency. * @return current {@link JmsDefaultListenerContainerSpec}. * @see DefaultMessageListenerContainer#setConcurrency(String) */ public JmsDefaultListenerContainerSpec concurrency(String concurrency) { this.target.setConcurrency(concurrency); return this; } /** * The concurrent consumers number to use. * @param concurrentConsumers the concurrent consumers count. * @return current {@link JmsDefaultListenerContainerSpec}. * @see DefaultMessageListenerContainer#setConcurrentConsumers(int) */ public JmsDefaultListenerContainerSpec concurrentConsumers(int concurrentConsumers) { this.target.setConcurrentConsumers(concurrentConsumers); return this; } /** * The max for concurrent consumers number to use. * @param maxConcurrentConsumers the max concurrent consumers count. * @return current {@link JmsDefaultListenerContainerSpec}. * @see DefaultMessageListenerContainer#setMaxConcurrentConsumers(int) */ public JmsDefaultListenerContainerSpec maxConcurrentConsumers(int maxConcurrentConsumers) { this.target.setMaxConcurrentConsumers(maxConcurrentConsumers); return this; } /** * The max messages per task. * @param maxMessagesPerTask the max messages per task. * @return current {@link JmsDefaultListenerContainerSpec}. * @see DefaultMessageListenerContainer#setMaxMessagesPerTask(int) */ public JmsDefaultListenerContainerSpec maxMessagesPerTask(int maxMessagesPerTask) { this.target.setMaxMessagesPerTask(maxMessagesPerTask); return this; } /** * The max for concurrent consumers number to use. * @param idleConsumerLimit the limit for idle consumer. * @return current {@link JmsDefaultListenerContainerSpec}. * @see DefaultMessageListenerContainer#setMaxConcurrentConsumers(int) */ public JmsDefaultListenerContainerSpec idleConsumerLimit(int idleConsumerLimit) { this.target.setIdleConsumerLimit(idleConsumerLimit); return this; } /** * The the limit for idle task. * @param idleTaskExecutionLimit the limit for idle task. * @return current {@link JmsDefaultListenerContainerSpec}. * @see DefaultMessageListenerContainer#setIdleTaskExecutionLimit(int) */ public JmsDefaultListenerContainerSpec idleTaskExecutionLimit(int idleTaskExecutionLimit) { this.target.setIdleTaskExecutionLimit(idleTaskExecutionLimit); return this; } /** * A {@link PlatformTransactionManager} reference. * @param transactionManager the {@link PlatformTransactionManager} to use. * @return current {@link JmsDefaultListenerContainerSpec}. * @see DefaultMessageListenerContainer#setTransactionManager(PlatformTransactionManager) */ public JmsDefaultListenerContainerSpec transactionManager(PlatformTransactionManager transactionManager) { this.target.setTransactionManager(transactionManager); return this; } /** * A name for transaction. * @param transactionName the name for transaction. * @return current {@link JmsDefaultListenerContainerSpec}. * @see DefaultMessageListenerContainer#setTransactionName(String) */ public JmsDefaultListenerContainerSpec transactionName(String transactionName) { this.target.setTransactionName(transactionName); return this; } /** * A transaction timeout. * @param transactionTimeout the transaction timeout. * @return current {@link JmsDefaultListenerContainerSpec}. * @see DefaultMessageListenerContainer#setTransactionTimeout(int) */ public JmsDefaultListenerContainerSpec transactionTimeout(int transactionTimeout) { this.target.setTransactionTimeout(transactionTimeout); return this; } /** * A receive timeout. * @param receiveTimeout the receive timeout. * @return current {@link JmsDefaultListenerContainerSpec}. * @see DefaultMessageListenerContainer#setReceiveTimeout(long) */ public JmsDefaultListenerContainerSpec receiveTimeout(long receiveTimeout) { this.target.setReceiveTimeout(receiveTimeout); return this; } }