gpt4 book ai didi

java - 使用 Redis 发布/订阅 : how to make a subscription expire

转载 作者:可可西里 更新时间:2023-11-01 11:12:27 26 4
gpt4 key购买 nike

我们在 java 框架 (vertx) 中使用 redis pub/sub 来跟踪一些 rest 调用。

为了不让 Redis 过载,我在 30 秒后取消订阅一个 channel ,如下所示:

private void subscribe(Message<String> message) {

String msgId = message.body();
redisClient.subscribe(msgId, result -> {
if (!result.succeeded()) {
log.warn("subscribe failed msgId={}", msgId, result.cause());
message.fail(500, String.format("retrieve conversation %s failure", msgId));
return;
}

log.info("subscribed for message id :{}", msgId);
message.reply("OK");

//unsubscribe after 30 seconds.
vertx.setTimer(30000, r -> {
redisClient.unsubscribe(Collections.singletonList(msgId), r2 -> {
if(!r2.succeeded()){
log.warn("unsubscribe failed msgId={}", msgId, r2.cause());
}
});

});
});
}

我想知道 redis 中是否有一种方法可以在延迟或类似的情况下回滚订阅。

欢迎提出任何改进意见。

最佳答案

不,没有。

根据文档:https://redis.io/commands/subscribe

您只能指定要收听的 channel 。您要么断开连接,要么发出 UNSUBSCRIBE 命令。

关于java - 使用 Redis 发布/订阅 : how to make a subscription expire,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53883627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com