连接断开时如何让Lettuce通知应用程序?

时间:2018-11-28 09:19:27

标签: connection lettuce

我们正在项目中使用生菜。我们需要监视连接状态。

我知道Lettuce可以在连接断开时重新连接Redis。但是,有什么方法可以通知应用程序连接已断开/断开吗?

谢谢, 史蒂文

1 个答案:

答案 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(); 上。)

了解更多