Módulo: Mongo::Monitoramento::Subscribable

Incluído em:
Mongo::Monitoramento, global
Definido em:
build/ruby-driver-v2.19/lib/mongo/monitoring.rb

Visão geral

Contém métodos de assinatura comuns entre monitoramento e assinaturas de evento globais.

Desde:

  • 2.6.0

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#assinatura(tópico, assinante) ➤ Objeto

Observação:

É possível inscrever o mesmo ouvinte no mesmo tópico

Inscrever um ouvinte em um tópico de evento .

várias vezes; nesse caso, o ouvinte será invocado quantas vezes estiver inscrito e, para cancelá-lo, será necessário o mesmo número de chamadas de cancelamento.

Exemplos:

Inscrever-se no tópico.

monitoring.subscribe(QUERY, subscriber)

Assine o tópico globalmente.

Monitoring::Global.subscribe(QUERY, subscriber)

Parâmetros:

  • topic (string)

    O tópico do evento.

  • assinante (Objeto)

    O assinante que lidará com o evento.

Desde:

  • 2.1.0



105
106
107
# File 'build/ruby-driver-v2.19/lib/mongo/monitoring.rb', linha 105

def se inscrever(topic, assinante)
  Subscribers_for(topic).push(assinante)
end

#assinantesHash <string, Object>

Obtenha todos os assinantes.

Exemplos:

Obtenha todos os assinantes.

monitoring.subscribers

Obtenha todos os assinantes globais.

Mongo::Monitoring::Global.subscribers

Retorna:

  • (Hash <string, Objeto >)

    Os assinantes.

Desde:

  • 2.1.0



157
158
159
# File 'build/ruby-driver-v2.19/lib/mongo/monitoring.rb', linha 157

def assinantes
  @subscribers ||= {}
end

#assinantes?(topic) ➤ true, false

Determine se há algum assinante para um evento específico .

Exemplos:

Há assinantes?

monitoring.subscribers?(COMMAND)

Existem assinantes globais?

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

Parâmetros:

  • topic (string)

    O tópico do evento.

Retorna:

  • (verdadeiro, falso)

    Se houver assinantes para o tópico.

Desde:

  • 2.1.0



174
175
176
# File 'build/ruby-driver-v2.19/lib/mongo/monitoring.rb', linha 174

def assinantes?(topic)
  !Subscribers_for(topic).vazio?
end

#cancelar assinatura(tópico, assinante) ➤ Objeto

Observação:

O registro de assinantes globais é separado do registro de assinantes por cliente. O mesmo assinante pode ser inscrito em eventos de um cliente específico, bem como globalmente; o cancelamento da assinatura globalmente não cancelará a assinatura desse assinante do cliente para o qual ele foi explicitamente inscrito.

Observação:

Atualmente, a lista de assinantes globais é copiada para um cliente sempre que o cliente é criado. Portanto, o cancelamento da assinatura de um assinante globalmente não tem efeito para os clientes existentes - eles continuarão enviando eventos para o assinante com assinatura cancelada.

Cancelar a assinatura de um ouvinte de um tópico de evento .

Se o ouvinte tiver se assinatura no tópico do evento várias vezes, essa chamada removerá uma única vez.

Se o ouvinte não estiver inscrito no tópico, essa operação será não operacional e nenhuma exceção será gerada.

Exemplos:

Cancele a assinatura do tópico.

monitoring.unsubscribe(QUERY, subscriber)

Cancele a assinatura do tópico globalmente.

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

Parâmetros:

  • topic (string)

    O tópico do evento.

  • assinante (Objeto)

    O assinante a ser cancelado.

Desde:

  • 2.6.0



138
139
140
141
142
143
144
# File 'build/ruby-driver-v2.19/lib/mongo/monitoring.rb', linha 138

def cancelar assinatura(topic, assinante)
  subs = Subscribers_for(topic)
  index = subs.index(assinante)
  se index
    subs.delete_at(index)
  end
end