MessageManager接口异步化

This commit is contained in:
redkale
2024-07-03 15:04:36 +08:00
parent 8fde50fabf
commit 20d400178b
3 changed files with 291 additions and 291 deletions

View File

@@ -1,279 +1,279 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.redkale</groupId> <groupId>org.redkale</groupId>
<artifactId>redkale</artifactId> <artifactId>redkale</artifactId>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>RedkaleProject</name> <name>RedkaleProject</name>
<url>https://redkale.org</url> <url>https://redkale.org</url>
<description>redkale -- java framework</description> <description>redkale -- java framework</description>
<version>2.8.0-SNAPSHOT</version> <version>2.8.0-SNAPSHOT</version>
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>11</maven.compiler.source> <maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target> <maven.compiler.target>11</maven.compiler.target>
<junit.version>5.9.0</junit.version> <junit.version>5.9.0</junit.version>
<maven-jar-plugin.version>3.4.0</maven-jar-plugin.version> <maven-jar-plugin.version>3.4.0</maven-jar-plugin.version>
<maven-gpg-plugin.version>3.2.4</maven-gpg-plugin.version> <maven-gpg-plugin.version>3.2.4</maven-gpg-plugin.version>
<maven-source-plugin.version>3.2.0</maven-source-plugin.version> <maven-source-plugin.version>3.2.0</maven-source-plugin.version>
<maven-assembly-plugin.version>3.7.0</maven-assembly-plugin.version> <maven-assembly-plugin.version>3.7.0</maven-assembly-plugin.version>
<nexus-staging-plugin.version>1.7.0</nexus-staging-plugin.version> <nexus-staging-plugin.version>1.7.0</nexus-staging-plugin.version>
<maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version> <maven-compiler-plugin.version>3.13.0</maven-compiler-plugin.version>
<maven-surefire-plugin.version>3.2.5</maven-surefire-plugin.version> <maven-surefire-plugin.version>3.2.5</maven-surefire-plugin.version>
<maven-failsafe-plugin.version>3.2.5</maven-failsafe-plugin.version> <maven-failsafe-plugin.version>3.2.5</maven-failsafe-plugin.version>
<spotless-maven-plugin.version>2.43.0</spotless-maven-plugin.version> <spotless-maven-plugin.version>2.43.0</spotless-maven-plugin.version>
<palantir-java-format.version>2.46.0</palantir-java-format.version> <palantir-java-format.version>2.46.0</palantir-java-format.version>
</properties> </properties>
<licenses> <licenses>
<license> <license>
<name>Apache 2</name> <name>Apache 2</name>
<url>https://www.apache.org/licenses/</url> <url>https://www.apache.org/licenses/</url>
<distribution>repo</distribution> <distribution>repo</distribution>
<comments>Apache License</comments> <comments>Apache License</comments>
</license> </license>
</licenses> </licenses>
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>org.junit.jupiter</groupId> <groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId> <artifactId>junit-jupiter</artifactId>
<version>${junit.version}</version> <version>${junit.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
</dependencies> </dependencies>
<repositories> <repositories>
<repository> <repository>
<id>central</id> <id>central</id>
<name>Central Repository</name> <name>Central Repository</name>
<url>https://repo.maven.apache.org/maven2</url> <url>https://repo.maven.apache.org/maven2</url>
</repository> </repository>
<repository> <repository>
<id>sonatype-nexus-snapshots</id> <id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name> <name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots</url> <url>https://oss.sonatype.org/content/repositories/snapshots</url>
</repository> </repository>
</repositories> </repositories>
<developers> <developers>
<developer> <developer>
<id>Redkale</id> <id>Redkale</id>
<name>redkale</name> <name>redkale</name>
<email>redkale@qq.com</email> <email>redkale@qq.com</email>
<url>https://redkale.org</url> <url>https://redkale.org</url>
<roles> <roles>
<role>Project Manager</role> <role>Project Manager</role>
<role>Architect</role> <role>Architect</role>
</roles> </roles>
<organization>redkale</organization> <organization>redkale</organization>
<organizationUrl>https://redkale.org</organizationUrl> <organizationUrl>https://redkale.org</organizationUrl>
<properties> <properties>
<dept>No</dept> <dept>No</dept>
</properties> </properties>
<timezone>8</timezone> <timezone>8</timezone>
</developer> </developer>
</developers> </developers>
<distributionManagement> <distributionManagement>
<repository> <repository>
<id>ossrh</id> <id>ossrh</id>
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url> <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
</repository> </repository>
<snapshotRepository> <snapshotRepository>
<id>ossrh</id> <id>ossrh</id>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url> <url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
</snapshotRepository> </snapshotRepository>
</distributionManagement> </distributionManagement>
<scm> <scm>
<url>https://github.com/redkale/redkale</url> <url>https://github.com/redkale/redkale</url>
<connection>scm:git:git@github.com/redkale/redkale.git</connection> <connection>scm:git:git@github.com/redkale/redkale.git</connection>
<developerConnection>scm:git:git@github.com:redkale/redkale.git</developerConnection> <developerConnection>scm:git:git@github.com:redkale/redkale.git</developerConnection>
</scm> </scm>
<issueManagement> <issueManagement>
<system>GitHub Issues</system> <system>GitHub Issues</system>
<url>https://github.com/redkale/redkale/issues</url> <url>https://github.com/redkale/redkale/issues</url>
</issueManagement> </issueManagement>
<build> <build>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin.version}</version> <version>${maven-compiler-plugin.version}</version>
<configuration> <configuration>
<encoding>UTF-8</encoding> <encoding>UTF-8</encoding>
<compilerArgs> <compilerArgs>
<arg>-parameters</arg> <arg>-parameters</arg>
</compilerArgs> </compilerArgs>
</configuration> </configuration>
</plugin> </plugin>
<!-- 需要注释掉, 否则会生成native-image配置信息 <!-- 需要注释掉, 否则会生成native-image配置信息
<plugin> <plugin>
<groupId>org.redkale.maven.plugins</groupId> <groupId>org.redkale.maven.plugins</groupId>
<artifactId>redkale-maven-plugin</artifactId> <artifactId>redkale-maven-plugin</artifactId>
<version>1.1.0</version> <version>1.1.0</version>
<executions> <executions>
<execution> <execution>
<id>redkale-compile</id> <id>redkale-compile</id>
<phase>process-classes</phase> <phase>process-classes</phase>
<goals> <goals>
<goal>compile</goal> <goal>compile</goal>
</goals> </goals>
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
--> -->
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId> <artifactId>maven-jar-plugin</artifactId>
<version>${maven-jar-plugin.version}</version> <version>${maven-jar-plugin.version}</version>
<configuration> <configuration>
<archive> <archive>
<addMavenDescriptor>false</addMavenDescriptor> <addMavenDescriptor>false</addMavenDescriptor>
<manifest> <manifest>
<mainClass>org.redkale.boot.Application</mainClass> <mainClass>org.redkale.boot.Application</mainClass>
</manifest> </manifest>
</archive> </archive>
</configuration> </configuration>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId> <artifactId>maven-surefire-plugin</artifactId>
<version>${maven-surefire-plugin.version}</version> <version>${maven-surefire-plugin.version}</version>
<configuration> <configuration>
<forkMode>once</forkMode> <forkMode>once</forkMode>
<argLine>-Dfile.encoding=UTF-8</argLine> <argLine>-Dfile.encoding=UTF-8</argLine>
</configuration> </configuration>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId> <artifactId>maven-failsafe-plugin</artifactId>
<version>${maven-failsafe-plugin.version}</version> <version>${maven-failsafe-plugin.version}</version>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-gpg-plugin</artifactId> <artifactId>maven-gpg-plugin</artifactId>
<version>${maven-gpg-plugin.version}</version> <version>${maven-gpg-plugin.version}</version>
<executions> <executions>
<execution> <execution>
<id>sign-artifacts</id> <id>sign-artifacts</id>
<phase>verify</phase> <phase>verify</phase>
<goals> <goals>
<goal>sign</goal> <goal>sign</goal>
</goals> </goals>
<configuration> <configuration>
<signer>bc</signer> <signer>bc</signer>
</configuration> </configuration>
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-source-plugin</artifactId> <artifactId>maven-source-plugin</artifactId>
<version>${maven-source-plugin.version}</version> <version>${maven-source-plugin.version}</version>
<executions> <executions>
<execution> <execution>
<goals> <goals>
<goal>jar</goal> <goal>jar</goal>
</goals> </goals>
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-javadoc-plugin</artifactId> <artifactId>maven-javadoc-plugin</artifactId>
<version>${maven-source-plugin.version}</version> <version>${maven-source-plugin.version}</version>
<executions> <executions>
<execution> <execution>
<goals> <goals>
<goal>jar</goal> <goal>jar</goal>
</goals> </goals>
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId> <artifactId>maven-assembly-plugin</artifactId>
<version>${maven-assembly-plugin.version}</version> <version>${maven-assembly-plugin.version}</version>
<configuration> <configuration>
<appendAssemblyId>false</appendAssemblyId> <appendAssemblyId>false</appendAssemblyId>
<descriptors> <descriptors>
<descriptor>my/assembly.xml</descriptor> <descriptor>my/assembly.xml</descriptor>
</descriptors> </descriptors>
</configuration> </configuration>
<executions> <executions>
<execution> <execution>
<id>redkale</id> <id>redkale</id>
<phase>package</phase> <phase>package</phase>
<goals> <goals>
<goal>single</goal> <goal>single</goal>
</goals> </goals>
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
<plugin> <plugin>
<groupId>org.sonatype.plugins</groupId> <groupId>org.sonatype.plugins</groupId>
<artifactId>nexus-staging-maven-plugin</artifactId> <artifactId>nexus-staging-maven-plugin</artifactId>
<version>${nexus-staging-plugin.version}</version> <version>${nexus-staging-plugin.version}</version>
<extensions>true</extensions> <extensions>true</extensions>
<configuration> <configuration>
<serverId>ossrh</serverId> <serverId>ossrh</serverId>
<nexusUrl>https://oss.sonatype.org/</nexusUrl> <nexusUrl>https://s01.oss.sonatype.org/</nexusUrl>
<autoReleaseAfterClose>true</autoReleaseAfterClose> <autoReleaseAfterClose>true</autoReleaseAfterClose>
</configuration> </configuration>
</plugin> </plugin>
<plugin> <plugin>
<groupId>com.diffplug.spotless</groupId> <groupId>com.diffplug.spotless</groupId>
<artifactId>spotless-maven-plugin</artifactId> <artifactId>spotless-maven-plugin</artifactId>
<version>${spotless-maven-plugin.version}</version> <version>${spotless-maven-plugin.version}</version>
<configuration> <configuration>
<lineEndings>UNIX</lineEndings> <lineEndings>UNIX</lineEndings>
<formats> <formats>
<format> <format>
<includes> <includes>
<include>src/**/java/**/*.java</include> <include>src/**/java/**/*.java</include>
</includes> </includes>
<trimTrailingWhitespace/> <trimTrailingWhitespace/>
<endWithNewline/> <endWithNewline/>
<indent> <indent>
<spaces>true</spaces> <spaces>true</spaces>
<spacesPerTab>4</spacesPerTab> <spacesPerTab>4</spacesPerTab>
</indent> </indent>
</format> </format>
</formats> </formats>
<java> <java>
<palantirJavaFormat> <palantirJavaFormat>
<version>${palantir-java-format.version}</version> <version>${palantir-java-format.version}</version>
<style>PALANTIR</style> <style>PALANTIR</style>
<formatJavadoc>true</formatJavadoc> <formatJavadoc>true</formatJavadoc>
</palantirJavaFormat> </palantirJavaFormat>
</java> </java>
</configuration> </configuration>
<executions> <executions>
<execution> <execution>
<goals> <goals>
<goal>check</goal> <goal>check</goal>
</goals> </goals>
<phase>compile</phase> <phase>compile</phase>
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
</plugins> </plugins>
</build> </build>
</project> </project>

View File

@@ -4,6 +4,7 @@
package org.redkale.mq; package org.redkale.mq;
import java.util.List; import java.util.List;
import java.util.concurrent.CompletableFuture;
import org.redkale.inject.Resourcable; import org.redkale.inject.Resourcable;
/** /**
@@ -20,22 +21,22 @@ public interface MessageManager extends Resourcable {
* 创建topic * 创建topic
* *
* @param topics topic集合 * @param topics topic集合
* @return 是否成 * @return 是否
*/ */
public boolean createTopic(String... topics); public CompletableFuture<Void> createTopic(String... topics);
/** /**
* 删除topic如果不存在则跳过 * 删除topic如果不存在则跳过
* *
* @param topics topic集合 * @param topics topic集合
* @return 是否成 * @return 是否
*/ */
public boolean deleteTopic(String... topics); public CompletableFuture<Void> deleteTopic(String... topics);
/** /**
* 查询所有topic * 查询所有topic
* *
* @return topic集合 * @return topic集合
*/ */
public abstract List<String> queryTopic(); public abstract CompletableFuture<List<String>> queryTopic();
} }

View File

@@ -5,9 +5,6 @@
*/ */
package org.redkale.mq.spi; package org.redkale.mq.spi;
import static org.redkale.boot.Application.RESNAME_APP_NAME;
import static org.redkale.boot.Application.RESNAME_APP_NODEID;
import java.lang.reflect.ParameterizedType; import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
@@ -20,6 +17,8 @@ import java.util.logging.*;
import org.redkale.annotation.*; import org.redkale.annotation.*;
import org.redkale.annotation.AutoLoad; import org.redkale.annotation.AutoLoad;
import org.redkale.boot.*; import org.redkale.boot.*;
import static org.redkale.boot.Application.RESNAME_APP_NAME;
import static org.redkale.boot.Application.RESNAME_APP_NODEID;
import org.redkale.cluster.HttpRpcClient; import org.redkale.cluster.HttpRpcClient;
import org.redkale.convert.Convert; import org.redkale.convert.Convert;
import org.redkale.convert.ConvertFactory; import org.redkale.convert.ConvertFactory;
@@ -414,17 +413,17 @@ public abstract class MessageAgent implements MessageManager {
@ResourceChanged @ResourceChanged
public abstract void onResourceChange(ResourceEvent[] events); public abstract void onResourceChange(ResourceEvent[] events);
// // 新增topic
@Override @Override
public abstract boolean createTopic(String... topics); public abstract CompletableFuture<Void> createTopic(String... topics);
// 删除topic如果不存在则跳过 // 删除topic如果不存在则跳过
@Override @Override
public abstract boolean deleteTopic(String... topics); public abstract CompletableFuture<Void> deleteTopic(String... topics);
// 查询所有topic // 查询所有topic
@Override @Override
public abstract List<String> queryTopic(); public abstract CompletableFuture<List<String>> queryTopic();
// ServiceLoader时判断配置是否符合当前实现类 // ServiceLoader时判断配置是否符合当前实现类
public abstract boolean acceptsConf(AnyValue config); public abstract boolean acceptsConf(AnyValue config);