Merge branch '1.3.x'
commit
85cc885fd1
@ -0,0 +1,87 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-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.boot.autoconfigure.amqp;
|
||||||
|
|
||||||
|
import org.springframework.amqp.rabbit.config.SimpleRabbitListenerContainerFactory;
|
||||||
|
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
|
||||||
|
import org.springframework.amqp.rabbit.listener.RabbitListenerContainerFactory;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure {@link RabbitListenerContainerFactory} with sensible defaults.
|
||||||
|
*
|
||||||
|
* @author Stephane Nicoll
|
||||||
|
* @since 1.3.3
|
||||||
|
*/
|
||||||
|
public final class RabbitListenerContainerFactoryConfigurer {
|
||||||
|
|
||||||
|
private RabbitProperties rabbitProperties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the {@link RabbitProperties} to use.
|
||||||
|
* @param rabbitProperties the {@link RabbitProperties}
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
public void setRabbitProperties(RabbitProperties rabbitProperties) {
|
||||||
|
this.rabbitProperties = rabbitProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new and pre-configured {@link SimpleRabbitListenerContainerFactory} instance
|
||||||
|
* for the specified {@link ConnectionFactory}.
|
||||||
|
* @param connectionFactory the {@link ConnectionFactory} to use.
|
||||||
|
* @return a pre-configured {@link SimpleRabbitListenerContainerFactory}
|
||||||
|
*/
|
||||||
|
public SimpleRabbitListenerContainerFactory createRabbitListenerContainerFactory(
|
||||||
|
ConnectionFactory connectionFactory) {
|
||||||
|
SimpleRabbitListenerContainerFactory factory = new SimpleRabbitListenerContainerFactory();
|
||||||
|
configure(factory, connectionFactory);
|
||||||
|
return factory;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply the default settings for the specified jms listener container factory. The
|
||||||
|
* factory can be further tuned and default settings can be overridden.
|
||||||
|
* @param factory the {@link SimpleRabbitListenerContainerFactory} instance to configure
|
||||||
|
* @param connectionFactory the {@link ConnectionFactory} to use
|
||||||
|
*/
|
||||||
|
public void configure(SimpleRabbitListenerContainerFactory factory,
|
||||||
|
ConnectionFactory connectionFactory) {
|
||||||
|
Assert.notNull(factory, "Factory must not be null");
|
||||||
|
Assert.notNull(connectionFactory, "ConnectionFactory must not be null");
|
||||||
|
factory.setConnectionFactory(connectionFactory);
|
||||||
|
RabbitProperties.Listener listenerConfig = this.rabbitProperties.getListener();
|
||||||
|
factory.setAutoStartup(listenerConfig.isAutoStartup());
|
||||||
|
if (listenerConfig.getAcknowledgeMode() != null) {
|
||||||
|
factory.setAcknowledgeMode(listenerConfig.getAcknowledgeMode());
|
||||||
|
}
|
||||||
|
if (listenerConfig.getConcurrency() != null) {
|
||||||
|
factory.setConcurrentConsumers(listenerConfig.getConcurrency());
|
||||||
|
}
|
||||||
|
if (listenerConfig.getMaxConcurrency() != null) {
|
||||||
|
factory.setMaxConcurrentConsumers(listenerConfig.getMaxConcurrency());
|
||||||
|
}
|
||||||
|
if (listenerConfig.getPrefetch() != null) {
|
||||||
|
factory.setPrefetchCount(listenerConfig.getPrefetch());
|
||||||
|
}
|
||||||
|
if (listenerConfig.getTransactionSize() != null) {
|
||||||
|
factory.setTxSize(listenerConfig.getTransactionSize());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,116 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2012-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.boot.autoconfigure.jms;
|
||||||
|
|
||||||
|
import javax.jms.ConnectionFactory;
|
||||||
|
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
|
||||||
|
import org.springframework.jms.config.JmsListenerContainerFactory;
|
||||||
|
import org.springframework.jms.support.destination.DestinationResolver;
|
||||||
|
import org.springframework.transaction.jta.JtaTransactionManager;
|
||||||
|
import org.springframework.util.Assert;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure {@link JmsListenerContainerFactory} with sensible defaults.
|
||||||
|
*
|
||||||
|
* @author Stephane Nicoll
|
||||||
|
* @since 1.3.3
|
||||||
|
*/
|
||||||
|
public final class JmsListenerContainerFactoryConfigurer {
|
||||||
|
|
||||||
|
private DestinationResolver destinationResolver;
|
||||||
|
|
||||||
|
private JtaTransactionManager transactionManager;
|
||||||
|
|
||||||
|
private JmsProperties jmsProperties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the {@link DestinationResolver} to use or {@code null} if no destination
|
||||||
|
* resolver should be associated with the factory by default.
|
||||||
|
* @param destinationResolver the {@link DestinationResolver}
|
||||||
|
*/
|
||||||
|
@Autowired(required = false)
|
||||||
|
public void setDestinationResolver(DestinationResolver destinationResolver) {
|
||||||
|
this.destinationResolver = destinationResolver;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the {@link JtaTransactionManager} to use or {@code null} if the JTA
|
||||||
|
* support should not be used.
|
||||||
|
* @param transactionManager the {@link JtaTransactionManager}
|
||||||
|
*/
|
||||||
|
@Autowired(required = false)
|
||||||
|
public void setTransactionManager(JtaTransactionManager transactionManager) {
|
||||||
|
this.transactionManager = transactionManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the {@link JmsProperties to use}.
|
||||||
|
* @param jmsProperties the {@link JmsProperties}
|
||||||
|
*/
|
||||||
|
@Autowired
|
||||||
|
public void setJmsProperties(JmsProperties jmsProperties) {
|
||||||
|
this.jmsProperties = jmsProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new and pre-configured {@link DefaultJmsListenerContainerFactory} instance
|
||||||
|
* for the specified {@link ConnectionFactory}.
|
||||||
|
* @param connectionFactory the {@link ConnectionFactory} to use.
|
||||||
|
* @return a pre-configured {@link DefaultJmsListenerContainerFactory}
|
||||||
|
*/
|
||||||
|
public DefaultJmsListenerContainerFactory createJmsListenerContainerFactory(
|
||||||
|
ConnectionFactory connectionFactory) {
|
||||||
|
DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory();
|
||||||
|
configure(factory, connectionFactory);
|
||||||
|
return factory;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply the default settings for the specified jms listener container factory. The
|
||||||
|
* factory can be further tuned and default settings can be overridden.
|
||||||
|
* @param factory the {@link DefaultJmsListenerContainerFactory} instance to configure
|
||||||
|
* @param connectionFactory the {@link ConnectionFactory} to use
|
||||||
|
*/
|
||||||
|
public void configure(DefaultJmsListenerContainerFactory factory,
|
||||||
|
ConnectionFactory connectionFactory) {
|
||||||
|
Assert.notNull(factory, "Factory must not be null");
|
||||||
|
Assert.notNull(connectionFactory, "ConnectionFactory must not be null");
|
||||||
|
factory.setConnectionFactory(connectionFactory);
|
||||||
|
factory.setPubSubDomain(this.jmsProperties.isPubSubDomain());
|
||||||
|
if (this.transactionManager != null) {
|
||||||
|
factory.setTransactionManager(this.transactionManager);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
factory.setSessionTransacted(true);
|
||||||
|
}
|
||||||
|
if (this.destinationResolver != null) {
|
||||||
|
factory.setDestinationResolver(this.destinationResolver);
|
||||||
|
}
|
||||||
|
JmsProperties.Listener listener = this.jmsProperties.getListener();
|
||||||
|
factory.setAutoStartup(listener.isAutoStartup());
|
||||||
|
if (listener.getAcknowledgeMode() != null) {
|
||||||
|
factory.setSessionAcknowledgeMode(listener.getAcknowledgeMode().getMode());
|
||||||
|
}
|
||||||
|
String concurrency = listener.formatConcurrency();
|
||||||
|
if (concurrency != null) {
|
||||||
|
factory.setConcurrency(concurrency);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue