我们正在项目中使用生菜。我们需要监视连接状态。
我知道Lettuce可以在连接断开时重新连接Redis。但是,有什么方法可以通知应用程序连接已断开/断开吗?
谢谢, 史蒂文
答案 0 :(得分:0)
Lettuce为连接事件提供一个事件模型。您可以订阅EventBus
并响应总线上发布的事件。有多个事件,但是对于您而言,您想听听已连接和已断开的事件:
ConnectionActivatedEvent
:逻辑连接已激活,可用于分派Redis命令(SSL握手完成,在激活收到响应之前PING)ConnectionDeactivatedEvent
:逻辑连接已禁用。重置内部处理状态,并将isOpen()
标志设置为false
。两个事件都在接收到与运输相关的事件(例如分别为ConnectedEvent
的{{1}}之后被触发。
以下示例说明了如何使用这些事件:
DisconnectedEvent
请注意,事件是异步调度的。事件监听器中发生的任何事情都应该是非阻塞的(即,如果您需要调用阻塞代码(如进一步的Redis交互),请将该任务卸载到专用的RedisClient client = RedisClient.create()
EventBus eventBus = client.getresources().eventBus();
Disposable subscription = eventBus.get().subscribe(e -> {
if (e instanceOf ConnectionActivatedEvent) {
// …
}
});
…
subscription.dispose();
client.shutdown();
上。)