Primário
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.
reactive streams
O driver Scala é baseado no driver MongoDB Java Reactive Streams. A API de fluxo reativo consiste nos seguintes componentes:
Observable
: uma implementação personalizada de um EditorObserver
: uma implementação personalizada de um Assinante
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.
Observables
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.
Contrapressão
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.
Auxiliares usados no Início rápido
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 oObservable
seja concluído e retorna os resultados coletadosheadResult()
: bloqueia até que o primeiro resultado doObservable
possa ser retornadoprintResults()
: bloqueia até que oObservable
seja concluído e imprime cada resultadoprintHeadResult()
: bloqueia até que o primeiro resultado deObservable
esteja disponível e depois o imprime