模块:Mongo::Monitoring::Subscribable

包含在:
Mongo::Monitoring ,全局
定义于:
构建/ruby-driver-v2.19/lib/ mongo / 监控.rb

Overview

包含监控事件订阅和全局事件订阅之间通用的订阅方法。

由于:

  • 2.6.0

实例方法摘要折叠

实例方法详细信息

# 订阅 (主题,subscriber) ⇒ Object

注意:

可以将同一侦听器订阅同一主题

将侦听器订阅事件主题。

多次,在这种情况下,监听器被调用的次数与订阅的次数相同,要取消订阅,需要执行相同次数的取消订阅调用。

例子:

订阅主题。

monitoring.subscribe(QUERY, subscriber)

全局订阅该主题。

Monitoring::Global.subscribe(QUERY, subscriber)

参数:

  • topic ( string )

    事件主题。

  • 订阅者 ( Object )

    处理事件的订阅者。

由于:

  • 2.1.0



105
106
107
# File 'build/Ruby-driver-v 2.19 /lib/mongo/monitoring.rb', line 105

def 订阅(topic, 订阅者)
  subscribers_for(topic).推动(订阅者)
end

#subscribersHash< string , Object>

获取所有订阅者。

例子:

获取所有订阅者。

monitoring.subscribers

获取所有全局订阅者。

Mongo::Monitoring::Global.subscribers

返回:

  • ( Hash< string , Object> )

    订阅者。

由于:

  • 2.1.0



157
158
159
# File 'build/Ruby-driver-v 2.19 /lib/mongo/monitoring.rb', line 157

def 订阅者
  @subscribers ||= {}
end

#订阅者? (topic) ⇒ true , false

确定特定事件是否有订阅者。

例子:

有订阅者吗?

monitoring.subscribers?(COMMAND)

有全球订户吗?

Mongo::Monitoring::Global.subscribers?(COMMAND)

参数:

  • topic ( string )

    事件主题。

返回:

  • ( true , false )

    如果该主题有订阅者。

由于:

  • 2.1.0



174
175
176
# File 'build/Ruby-driver-v 2.19 /lib/mongo/monitoring.rb', line 174

def 订户?(topic)
  !subscribers_for(topic).空?
end

# unsubscribe (topic,subscriber) ⇒ Object

注意:

全局订阅者注册表与每个客户端订阅者注册表是分开的。 同一个订阅者可以订阅来自特定客户端的事件,也可以订阅全局的事件;全局取消订阅不会使该订阅者从其显式订阅的客户端取消订阅。

注意:

目前,每当创建客户端时,都会将全局订阅者列表复制到客户端中。 因此,在全局范围内取消订阅订阅者对现有客户端没有影响,它们将继续向取消订阅的订阅者发送事件。

取消监听器对事件主题的订阅。

如果侦听器多次订阅事件主题,则此调用将删除单个订阅。

如果侦听器未订阅主题,则此操作为空操作,不会引发异常。

例子:

取消订阅主题。

monitoring.unsubscribe(QUERY, subscriber)

全局取消订阅该主题。

Mongo::Monitoring::Global.unsubscribe(QUERY, subscriber)

参数:

  • topic ( string )

    事件主题。

  • 订阅者 ( Object )

    要取消订阅的订阅者。

由于:

  • 2.6.0



138
139
140
141
142
143
144
# File 'build/Ruby-driver-v 2.19 /lib/mongo/monitoring.rb', line 138

def 取消订阅(topic, 订阅者)
  subs = subscribers_for(topic)
  索引(index) = subs.索引(index)(订阅者)
  if 索引(index)
    subs.delete_at(索引(index))
  end
end