作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我们在 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 中是否有一种方法可以在延迟或类似的情况下回滚订阅。
欢迎提出任何改进意见。
最佳答案
关于java - 使用 Redis 发布/订阅 : how to make a subscription expire,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53883627/
我是一名优秀的程序员,十分优秀!