【问题标题】:Subscribe to redis channel (pubsub) using lettuce reactive commands使用 lettuce 响应式命令订阅 redis 频道 (pubsub)
【发布时间】:2020-02-01 05:15:43
【问题描述】:

我正在使用io.lettuce.core 库,但在使用RedisPubSubReactiveCommands 接口订阅频道时遇到问题。

我有一个 StatefulRedisPubSubConnection 和一个我正在尝试订阅的活动 redis 集群。

connection.sync().subscribe("channel") 工作正常,connection.async().subscribe("channel") 也一样。但是,当我使用 lettuce 提供的反应式“热可观察”接口时,如下所示:

connection.reactive().subscribe(channels).subscribe();
connection.reactive().observeChannels().doOnNext(this::notifyObservers).subscribe();

它不会在 redis 上注册为订阅操作。我觉得我正在密切关注lettuce documentation 中给出的示例。

我正在为一个接受热Flux Observable 的接口进行编程,并且我正在接近用我自己的反应式包装器包装同步或异步连接接口并将它们扔到管道中。我在这里做错了什么?

【问题讨论】:

    标签: java redis project-reactor lettuce


    【解决方案1】:

    万一其他人遇到同样的问题,事实证明我将 Set<String> 对象传递到接受可变参数 Object... 的函数中,但没有意识到它将整个集合视为单个元素而不是将其解析为可变参数数组。

    我会把它留给其他人从我的愚蠢错误中吸取教训。

    【讨论】:

    • 请举例?!这对我不起作用: String channel = "__\key*__\:*"; connection.reactive().subscribe(channel).subscribe(); 忽略字符串中的反斜杠(无法正确格式化注释)。
    • 例子在这里:lettuce.io/core/release/reference/#pubsub.reactive-api如果我不知道什么不起作用,我帮不了你。
    猜你喜欢
    • 2016-05-22
    • 2012-05-01
    • 2011-12-31
    • 2019-01-22
    • 2019-01-14
    • 1970-01-01
    • 1970-01-01
    • 2017-03-24
    • 1970-01-01
    相关资源
    最近更新 更多