Menu Docs
Página inicial do Docs
/ / /
Scala
/

Primário

Nesta página

  • reactive streams
  • Observables
  • Contrapressão
  • Auxiliares usados no Início rápido

Este guia fornece informações básicas sobre o driver Scala e sua API assíncrona antes de mostrar como usar o driver e o MongoDB noguia de Início Rápido .

Observação

Consulte o Guia de instalação para obter instruções sobre como instalar o driver.

O driver Scala é baseado no driver MongoDB Java Reactive Streams. A API de fluxo reativo consiste nos seguintes componentes:

  1. Observable: uma implementação personalizada de um Editor

  2. Observer: uma implementação personalizada de um Assinante

  3. inscrição

Um Observable é um provedor de um número potencialmente ilimitado de elementos sequenciados, publicados de acordo com a demanda recebida de seu Observer ou múltiplas instâncias de Observer.

Em resposta a uma chamada para Observable.subscribe(Observer), as possíveis sequências de invocação para métodos na classe Observer são fornecidas pelo seguinte protocolo:

onSubscribe onNext* (onError | onComplete)?

Isso significa que onSubscribe() é sempre sinalizado, seguido por um número possivelmente ilimitado de onNext() sinais, conforme solicitado por Observer. Isso é seguido por um sinal onError() se houver uma falha ou um sinal onComplete() quando não houver mais elementos disponíveis, desde que o Subscription não seja cancelado.

Dica

Para saber mais sobre fluxos reativos, acesse a documentação de fluxos reativos.

A API do driver Scala espelha a API do driver Java Sync e quaisquer métodos que fazem com que a E/S da rede retorne um tipo Observable<T> , onde T é o tipo de resposta para a operação.

Observação

Todos os Observable tipos de retornados da API estão frios, o que significa que nada acontece até que eles sejam inscritos. Portanto, apenas criar um Observable não causará nenhuma E/S de rede. Não é até que você chame o método Subscription.request() que o driver executa a operação.

Os editores nesta implementação são unicast. Cada Subscription para um Observable está relacionado a uma única operação do MongoDB , e o Observable da instância Observer recebe seu próprio conjunto específico de resultados.

Por padrão, o traço Observer solicitará todos os resultados do Observer assim que o Observable for assinado. Certifique-se de que o Observer possa lidar com todos os resultados do Observable. Implementações personalizadas do método Observer.onSubscribe() podem salvar o Subscription para que os dados sejam solicitados somente quando o Observer tiver a capacidade.

No Início rápido, implementamos ajudantes implícitos personalizados definidos no Helpers.scala no Github repositório de origem do driver. Esses ajudantes recuperam e imprimem resultados. Embora o Quick Start seja um cenário artificial para código assíncrono, os exemplos bloqueiam os resultados de um exemplo antes de iniciar o próximo, para garantir o estado do banco de banco de dados. O objeto Helpers fornece os seguintes métodos:

  • results(): bloqueia até que o Observable seja concluído e retorna os resultados coletados

  • headResult(): bloqueia até que o primeiro resultado do Observable possa ser retornado

  • printResults(): bloqueia até que o Observable seja concluído e imprime cada resultado

  • printHeadResult(): bloqueia até que o primeiro resultado de Observable esteja disponível e depois o imprime

Voltar

Começar