diff --git a/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/client/MessagePipeClientAutoConfiguration.java b/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/client/MessagePipeClientAutoConfiguration.java index 09013c4c..01cc71c7 100644 --- a/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/client/MessagePipeClientAutoConfiguration.java +++ b/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/client/MessagePipeClientAutoConfiguration.java @@ -1,7 +1,6 @@ package org.minbox.framework.api.boot.autoconfigure.message.pipe.client; import org.minbox.framework.message.pipe.client.config.ClientConfiguration; -import org.minbox.framework.message.pipe.spring.annotation.client.EnableMessagePipeClient; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Bean; @@ -13,7 +12,6 @@ */ @ConditionalOnClass(ClientConfiguration.class) @EnableConfigurationProperties(MessagePipeClientProperties.class) -@EnableMessagePipeClient public class MessagePipeClientAutoConfiguration { private MessagePipeClientProperties messagePipeClientProperties; diff --git a/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/MessagePipeConfigurationCustomizer.java b/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/MessagePipeConfigurationCustomizer.java new file mode 100644 index 00000000..574855ad --- /dev/null +++ b/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/MessagePipeConfigurationCustomizer.java @@ -0,0 +1,20 @@ +package org.minbox.framework.api.boot.autoconfigure.message.pipe.server; + +import org.minbox.framework.message.pipe.server.config.MessagePipeConfiguration; + +/** + * The {@link MessagePipeConfiguration} Custom configuration interface definition + *
+ * If there is a sequence, you can use the {@link org.springframework.core.annotation.Order} annotation to configure + * + * @author 恒宇少年 + */ +@FunctionalInterface +public interface MessagePipeConfigurationCustomizer { + /** + * To implement this method, it can be modified according to the parameter object + * + * @param configuration The {@link MessagePipeConfiguration} instance + */ + void customize(MessagePipeConfiguration configuration); +} diff --git a/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/MessagePipeConfigurationCustomizers.java b/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/MessagePipeConfigurationCustomizers.java new file mode 100644 index 00000000..a49d89d8 --- /dev/null +++ b/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/MessagePipeConfigurationCustomizers.java @@ -0,0 +1,29 @@ +package org.minbox.framework.api.boot.autoconfigure.message.pipe.server; + +import org.minbox.framework.message.pipe.server.config.MessagePipeConfiguration; +import org.springframework.boot.util.LambdaSafe; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +/** + * The wrapper class of {@link MessagePipeConfigurationCustomizer} + *
+ * Execute {@link MessagePipeConfigurationCustomizer#customize} according to the order configured by {@link org.springframework.core.annotation.Order}
+ *
+ * @author 恒宇少年
+ */
+public class MessagePipeConfigurationCustomizers {
+ private List
@@ -41,14 +59,36 @@ public ServerConfiguration serverConfiguration() {
* @return The {@link MessagePipeConfiguration} instance
*/
@Bean
- public MessagePipeConfiguration messagePipeConfiguration() {
+ public MessagePipeConfiguration messagePipeConfiguration(MessagePipeConfigurationCustomizers customizers) {
MessagePipeConfiguration configuration = MessagePipeConfiguration.defaultConfiguration();
- MessagePipeConfiguration.LockTime lockTime =
- new MessagePipeConfiguration.LockTime()
- .setLeaseTime(messagePipeServerProperties.getLockLeaseTime())
- .setTimeUnit(messagePipeServerProperties.getLockLeaseTimeUnit());
- configuration.setLockTime(lockTime);
- configuration.setDistributionMessagePoolSize(messagePipeServerProperties.getDistributionMessagePoolSize());
- return configuration;
+ return customizers.customizer(configuration);
+ }
+
+ /**
+ * Configuration {@link MessagePipeConfiguration#setLockTime}
+ *
+ * @return The {@link MessagePipeConfigurationCustomizer} instance of {@link MessagePipeConfiguration.LockTime}
+ */
+ @Bean
+ public MessagePipeConfigurationCustomizer customizerLockTime() {
+ return configuration -> {
+ MessagePipeConfiguration.LockTime lockTime =
+ new MessagePipeConfiguration.LockTime()
+ .setLeaseTime(messagePipeServerProperties.getLockLeaseTime())
+ .setTimeUnit(messagePipeServerProperties.getLockLeaseTimeUnit());
+ configuration.setLockTime(lockTime);
+ };
+ }
+
+ /**
+ * Configuration {@link MessagePipeConfiguration#setMessagePipeMonitorMillis}
+ *
+ * @return The {@link MessagePipeConfigurationCustomizer} instance of monitor millis
+ */
+ @Bean
+ public MessagePipeConfigurationCustomizer customizerMonitorTime() {
+ return configuration ->
+ configuration.setMessagePipeMonitorMillis(messagePipeServerProperties.getMessagePipeMonitorMillis());
+
}
}
diff --git a/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/MessagePipeServerProperties.java b/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/MessagePipeServerProperties.java
index 0567a704..cbb150bf 100644
--- a/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/MessagePipeServerProperties.java
+++ b/api-boot-project/api-boot-autoconfigure/src/main/java/org/minbox/framework/api/boot/autoconfigure/message/pipe/server/MessagePipeServerProperties.java
@@ -37,5 +37,11 @@ public class MessagePipeServerProperties {
/**
* The number of threads in the message thread pool
*/
+ @Deprecated
private int distributionMessagePoolSize = 10;
+ /**
+ * The interval time for each message pipeline to perform monitoring
+ * time unit: milliseconds
+ */
+ private long messagePipeMonitorMillis = 10000L;
}
diff --git a/api-boot-samples/api-boot-sample-logging/pom.xml b/api-boot-samples/api-boot-sample-logging/pom.xml
index e5352012..f7d827e1 100644
--- a/api-boot-samples/api-boot-sample-logging/pom.xml
+++ b/api-boot-samples/api-boot-sample-logging/pom.xml
@@ -76,6 +76,7 @@
+ * 新消息写入消息管道时,
+ * 会触发{@link PushMessageEvent}事件,而该事件的监听方式则是采用的Redis的KeyEvent的形式
+ *
+ * @param connectionFactory Redis连接工厂对象
+ * @return The {@link RedisMessageListenerContainer} instance
+ */
+ @Bean
+ public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory connectionFactory) {
+ RedisMessageListenerContainer container = new RedisMessageListenerContainer();
+ container.setConnectionFactory(connectionFactory);
+ return container;
+ }
+
+}
diff --git a/api-boot-samples/api-boot-sample-message-pipe-server/src/main/java/org/minbox/framework/api/boot/sample/message/pipe/server/RequestIdCustomizer.java b/api-boot-samples/api-boot-sample-message-pipe-server/src/main/java/org/minbox/framework/api/boot/sample/message/pipe/server/RequestIdCustomizer.java
new file mode 100644
index 00000000..9eb0cd96
--- /dev/null
+++ b/api-boot-samples/api-boot-sample-message-pipe-server/src/main/java/org/minbox/framework/api/boot/sample/message/pipe/server/RequestIdCustomizer.java
@@ -0,0 +1,32 @@
+package org.minbox.framework.api.boot.sample.message.pipe.server;
+
+import org.minbox.framework.api.boot.autoconfigure.message.pipe.server.MessagePipeConfigurationCustomizer;
+import org.minbox.framework.message.pipe.core.transport.RequestIdGenerator;
+import org.minbox.framework.message.pipe.server.config.MessagePipeConfiguration;
+import org.springframework.stereotype.Component;
+
+import java.util.UUID;
+
+/**
+ * 自定义配置{@link org.minbox.framework.message.pipe.core.transport.RequestIdGenerator}
+ *
+ * @author 恒宇少年
+ */
+@Component
+public class RequestIdCustomizer implements MessagePipeConfigurationCustomizer {
+ @Override
+ public void customize(MessagePipeConfiguration configuration) {
+ RequestIdGenerator generator = new UuidRequestIdGenerator();
+ configuration.setRequestIdGenerator(generator);
+ }
+
+ /**
+ * 使用Uuid随机数生成请求ID
+ */
+ class UuidRequestIdGenerator implements RequestIdGenerator {
+ @Override
+ public String generate() {
+ return UUID.randomUUID().toString();
+ }
+ }
+}
diff --git a/api-boot-samples/api-boot-sample-mybatis-enhance-codegen/pom.xml b/api-boot-samples/api-boot-sample-mybatis-enhance-codegen/pom.xml
index e94f708d..ea6b707c 100644
--- a/api-boot-samples/api-boot-sample-mybatis-enhance-codegen/pom.xml
+++ b/api-boot-samples/api-boot-sample-mybatis-enhance-codegen/pom.xml
@@ -70,7 +70,7 @@