From cd3c20ef1cdcc0afb0546bf19d13f26fd2d56b98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=99=88=E6=B5=A9=E6=9D=B0?= <897546244@qq.com> Date: Fri, 7 Mar 2025 13:49:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(bus):=20=E5=A2=9E=E5=8A=A0=20sendAndReques?= =?UTF-8?q?t=20=E6=96=B9=E6=B3=95=E7=9A=84=E8=87=AA=E5=AE=9A=E4=B9=89?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 sendAndRequest 方法,支持用户自定义返回值- 在无响应订阅时,允许用户通过 Supplier 提供自定义返回值 - 优化了原有 sendAndRequest 方法的异常处理 --- .../main/java/org/noear/dami/bus/DamiBus.java | 12 ++++++++++++ .../java/org/noear/dami/bus/DamiBusImpl.java | 18 +++++++++++++++++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/dami/src/main/java/org/noear/dami/bus/DamiBus.java b/dami/src/main/java/org/noear/dami/bus/DamiBus.java index 03c2f87..861bdac 100644 --- a/dami/src/main/java/org/noear/dami/bus/DamiBus.java +++ b/dami/src/main/java/org/noear/dami/bus/DamiBus.java @@ -1,6 +1,7 @@ package org.noear.dami.bus; import java.util.function.Consumer; +import java.util.function.Supplier; /** * 大米总线(提供 Local Procedure Call 服务) @@ -56,6 +57,17 @@ public interface DamiBus { */ R sendAndRequest(final String topic, final C content, long timeout); + /** + * 发送并请求(会等待响应) + * + * @param topic 主题 + * @param content 内容 + * @param timeout 超时(毫秒) + * @param supplier 用户自定义返回 + * @return 响应结果 + */ + R sendAndRequest(final String topic, final C content, long timeout, Supplier supplier); + /** * 发送并订阅 * diff --git a/dami/src/main/java/org/noear/dami/bus/DamiBusImpl.java b/dami/src/main/java/org/noear/dami/bus/DamiBusImpl.java index 953e224..906004b 100644 --- a/dami/src/main/java/org/noear/dami/bus/DamiBusImpl.java +++ b/dami/src/main/java/org/noear/dami/bus/DamiBusImpl.java @@ -7,6 +7,7 @@ import org.noear.dami.exception.DamiNoSubscriptionException; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.function.Consumer; +import java.util.function.Supplier; /** * 大米总线实现 @@ -114,6 +115,18 @@ public class DamiBusImpl implements DamiBus, DamiBusConfigurator supplier) { AssertUtil.assertTopic(topic); CompletableFuture future = new CompletableFuture<>(); @@ -128,7 +141,10 @@ public class DamiBusImpl implements DamiBus, DamiBusConfigurator