XD-3380: Use AutoConfiguration for Binder Configurations
This commit is contained in:
committed by
David Turanski
parent
476664e38d
commit
38cf0cd738
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -0,0 +1,2 @@
|
||||
org.springframework.boot.autoconfigure.EnableAutoConfiguration:\
|
||||
org.springframework.cloud.stream.binder.rabbit.config.RabbitServiceAutoConfiguration
|
||||
@@ -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>
|
||||
|
||||
@@ -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")
|
||||
@@ -0,0 +1,2 @@
|
||||
org.springframework.boot.autoconfigure.EnableAutoConfiguration:\
|
||||
org.springframework.cloud.stream.binder.redis.config.RedisServiceAutoConfiguration
|
||||
@@ -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>
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user