XD-3380: Use AutoConfiguration for Binder Configurations

This commit is contained in:
Eric Bottard
2015-08-10 12:57:12 +02:00
committed by David Turanski
parent 476664e38d
commit 38cf0cd738
13 changed files with 44 additions and 24 deletions

View File

@@ -32,9 +32,15 @@
<artifactId>spring-boot-autoconfigure</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-lattice-connector</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>

View File

@@ -31,7 +31,7 @@ class RabbitBinderConfigurationProperties {
private int backOffMaxInterval;
private int backOffMultiplier;
private double backOffMultiplier;
private boolean transacted;
@@ -97,11 +97,11 @@ class RabbitBinderConfigurationProperties {
this.backOffMaxInterval = backOffMaxInterval;
}
public int getBackOffMultiplier() {
public double getBackOffMultiplier() {
return backOffMultiplier;
}
public void setBackOffMultiplier(int backOffMultiplier) {
public void setBackOffMultiplier(double backOffMultiplier) {
this.backOffMultiplier = backOffMultiplier;
}

View File

@@ -35,7 +35,7 @@ import org.springframework.integration.codec.Codec;
@Configuration
@Import(CodecConfiguration.class)
@EnableConfigurationProperties({RabbitBinderConfigurationProperties.class, SpringRabbitMQProperties.class})
@EnableConfigurationProperties({RabbitBinderConfigurationProperties.class})
public class RabbitMessageChannelBinderConfiguration {
@Autowired
@@ -96,4 +96,9 @@ public class RabbitMessageChannelBinderConfiguration {
ConnectionFactorySettings rabbitConnectionFactorySettings() {
return new ConnectionFactorySettings();
}
@Bean
SpringRabbitMQProperties springRabbitMQProperties() {
return new SpringRabbitMQProperties();
}
}

View File

@@ -14,13 +14,14 @@
* limitations under the License.
*/
package org.springframework.cloud.stream.config;
package org.springframework.cloud.stream.binder.rabbit.config;
import org.springframework.amqp.rabbit.connection.ConnectionFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.cloud.Cloud;
import org.springframework.cloud.CloudFactory;
import org.springframework.cloud.stream.binder.Binder;
import org.springframework.cloud.stream.binder.rabbit.RabbitMessageChannelBinder;
import org.springframework.cloud.stream.binder.rabbit.config.RabbitMessageChannelBinderConfiguration;
import org.springframework.context.annotation.Bean;
@@ -36,13 +37,13 @@ import org.springframework.context.annotation.PropertySource;
* @author Dave Syer
* @author Glenn Renfro
* @author David Turanski
* @author Eric Bottard
*/
@Configuration
@ConditionalOnClass(RabbitMessageChannelBinder.class)
@ConditionalOnMissingBean(RabbitMessageChannelBinder.class)
@ConditionalOnMissingBean(Binder.class)
@Import(RabbitMessageChannelBinderConfiguration.class)
@PropertySource("classpath:/META-INF/spring-cloud-stream/rabbit-binder.properties")
public class RabbitServiceConfiguration {
public class RabbitServiceAutoConfiguration {
@Configuration
@Profile("cloud")
protected static class CloudConfig {

View File

@@ -24,11 +24,11 @@ import org.springframework.core.io.Resource;
@ConfigurationProperties(prefix = "spring.rabbitmq")
class SpringRabbitMQProperties {
private String[] addresses;
private String[] addresses = new String[0];
private String[] adminAdresses;
private String[] adminAdresses = new String[0];
private String[] nodes;
private String[] nodes = new String[0];
private String username;

View File

@@ -9,7 +9,7 @@ spring.cloud.stream.binder.rabbit.default.batchSize: 100
spring.cloud.stream.binder.rabbit.default.batchTimeout: 5000
spring.cloud.stream.binder.rabbit.default.compress: false
spring.cloud.stream.binder.rabbit.default.concurrency: 1
spring.cloud.stream.binder.rabbit.default.deliveryMode: PERSISTENT
spring.cloud.stream.binder.rabbit.default.defaultDeliveryMode: PERSISTENT
spring.cloud.stream.binder.rabbit.default.durableSubscription: false
spring.cloud.stream.binder.rabbit.default.maxAttempts: 3
spring.cloud.stream.binder.rabbit.default.maxConcurrency: 1
@@ -18,6 +18,6 @@ spring.cloud.stream.binder.rabbit.default.prefetch: 1
spring.cloud.stream.binder.rabbit.default.replyHeaderPatterns: STANDARD_REPLY_HEADERS,*
spring.cloud.stream.binder.rabbit.default.republishToDLQ: false
spring.cloud.stream.binder.rabbit.default.requestHeaderPatterns: STANDARD_REQUEST_HEADERS,*
spring.cloud.stream.binder.rabbit.default.requeue: true
spring.cloud.stream.binder.rabbit.default.defaultRequeueRejected: true
spring.cloud.stream.binder.rabbit.default.transacted:false
spring.cloud.stream.binder.rabbit.default.txSize: 1

View File

@@ -0,0 +1,2 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration:\
org.springframework.cloud.stream.binder.rabbit.config.RabbitServiceAutoConfiguration

View File

@@ -32,9 +32,15 @@
<artifactId>spring-boot-autoconfigure</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-lattice-connector</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>

View File

@@ -14,18 +14,16 @@
* limitations under the License.
*/
package org.springframework.cloud.stream.config;
package org.springframework.cloud.stream.binder.redis.config;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.cloud.Cloud;
import org.springframework.cloud.CloudFactory;
import org.springframework.cloud.stream.binder.Binder;
import org.springframework.cloud.stream.binder.redis.RedisMessageChannelBinder;
import org.springframework.cloud.stream.binder.redis.config.RedisMessageChannelBinderConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.ImportResource;
import org.springframework.context.annotation.Profile;
import org.springframework.context.annotation.PropertySource;
import org.springframework.data.redis.connection.RedisConnectionFactory;
@@ -36,14 +34,13 @@ import org.springframework.data.redis.connection.RedisConnectionFactory;
* @author Mark Fisher
* @author Dave Syer
* @author David Turanski
* @author Eric Bottard
*/
@Configuration
@ConditionalOnClass(RedisMessageChannelBinder.class)
@ConditionalOnMissingBean(RedisMessageChannelBinder.class)
@ConditionalOnMissingBean(Binder.class)
@Import(RedisMessageChannelBinderConfiguration.class)
@ImportResource("classpath*:/META-INF/spring-xd/analytics/redis-analytics.xml")
@PropertySource("classpath:/META-INF/spring-cloud-stream/redis-binder.properties")
public class RedisServiceConfiguration {
public class RedisServiceAutoConfiguration {
@Configuration
@Profile("cloud")

View File

@@ -0,0 +1,2 @@
org.springframework.boot.autoconfigure.EnableAutoConfiguration:\
org.springframework.cloud.stream.binder.redis.config.RedisServiceAutoConfiguration

View File

@@ -50,6 +50,7 @@
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-redis</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>

View File

@@ -27,14 +27,14 @@ import org.springframework.cloud.stream.config.AggregateBuilderConfiguration;
import org.springframework.cloud.stream.config.ChannelBindingAdapterConfiguration;
import org.springframework.cloud.stream.config.ModuleRegistrar;
import org.springframework.cloud.stream.config.ChannelBindingAdapterRunner;
import org.springframework.cloud.stream.config.RabbitServiceConfiguration;
import org.springframework.cloud.stream.config.RedisServiceConfiguration;
import org.springframework.cloud.stream.binder.rabbit.config.RabbitServiceAutoConfiguration;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.integration.annotation.MessageEndpoint;
/**
* Annotation that identifies a class as a module.
*
* @author Dave Syer
* @author Marius Bogoevici
* @author David Turanski
@@ -45,7 +45,7 @@ import org.springframework.integration.annotation.MessageEndpoint;
@Inherited
@Configuration
@MessageEndpoint
@Import({RedisServiceConfiguration.class, RabbitServiceConfiguration.class,
@Import({
ChannelBindingAdapterConfiguration.class, ChannelBindingAdapterRunner.class,
AggregateBuilderConfiguration.class, ModuleRegistrar.class})
public @interface EnableModule {