diff --git a/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/MessagePipeServerAutoConfiguration.java b/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/MessagePipeServerAutoConfiguration.java index 36dd6d12..0872c85f 100644 --- a/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/MessagePipeServerAutoConfiguration.java +++ b/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/MessagePipeServerAutoConfiguration.java @@ -27,15 +27,33 @@ public MessagePipeServerAutoConfiguration(MessagePipeServerProperties messagePip this.messagePipeServerProperties = messagePipeServerProperties; } + /** + * Instantiate the wrapper class of {@link ServerConfigurationCustomizer} + * + * @param customizers The {@link ServerConfigurationCustomizer} object provider + * @return The {@link ServerConfigurationCustomizers} instance + */ + @Bean + @ConditionalOnMissingBean + public ServerConfigurationCustomizers serverConfigurationCustomizers( + ObjectProvider customizers) { + List sortedCustomizers = + customizers.orderedStream().collect(Collectors.toList()); + return new ServerConfigurationCustomizers(sortedCustomizers); + } + /** * Create {@link ServerConfiguration} instance * * @return The {@link ServerConfiguration} instance * @see MessagePipeServerProperties + * @see ServerConfigurationCustomizer + * @see ServerConfigurationCustomizers */ @Bean - public ServerConfiguration serverConfiguration() { - return messagePipeServerProperties.getConfiguration(); + public ServerConfiguration serverConfiguration(ServerConfigurationCustomizers customizers) { + ServerConfiguration configuration = messagePipeServerProperties.getConfiguration(); + return customizers.customizer(configuration); } /** diff --git a/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/ServerConfigurationCustomizer.java b/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/ServerConfigurationCustomizer.java new file mode 100644 index 00000000..58c2d7bc --- /dev/null +++ b/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/ServerConfigurationCustomizer.java @@ -0,0 +1,11 @@ +package org.minbox.framework.api.boot.autoconfigure.message.pipe.server; + +import org.minbox.framework.message.pipe.server.config.ServerConfiguration; + +/** + * @author 恒宇少年 + */ +@FunctionalInterface +public interface ServerConfigurationCustomizer { + void customize(ServerConfiguration serverConfiguration); +} diff --git a/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/ServerConfigurationCustomizers.java b/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/ServerConfigurationCustomizers.java new file mode 100644 index 00000000..81da6d54 --- /dev/null +++ b/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/ServerConfigurationCustomizers.java @@ -0,0 +1,25 @@ +package org.minbox.framework.api.boot.autoconfigure.message.pipe.server; + +import org.minbox.framework.message.pipe.server.config.ServerConfiguration; +import org.springframework.boot.util.LambdaSafe; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * @author 恒宇少年 + */ +public class ServerConfigurationCustomizers { + private List customizers; + + public ServerConfigurationCustomizers(List customizers) { + this.customizers = (customizers != null) ? new ArrayList<>(customizers) : Collections.emptyList(); + } + + public ServerConfiguration customizer(ServerConfiguration configuration) { + LambdaSafe.callbacks(ServerConfigurationCustomizer.class, this.customizers, configuration) + .withLogger(ServerConfigurationCustomizer.class).invoke((customizer) -> customizer.customize(configuration)); + return configuration; + } +} diff --git a/api-boot-samples/api-boot-sample-message-pipe-server/src/main/resources/application.yml b/api-boot-samples/api-boot-sample-message-pipe-server/src/main/resources/application.yml index 6c3ade7f..50374f28 100644 --- a/api-boot-samples/api-boot-sample-message-pipe-server/src/main/resources/application.yml +++ b/api-boot-samples/api-boot-sample-message-pipe-server/src/main/resources/application.yml @@ -18,3 +18,4 @@ api: configuration: # 配置监听端口号,默认为5200 server-port: 5200 + exclude-pipe-name-patterns: "test-1" diff --git a/pom.xml b/pom.xml index 3d2ebcc3..bca8fd37 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.minbox.framework minbox-parent - 1.0.3.RELEASE + 1.0.4-SNAPSHOT pom