2016-02-01 1 views

Répondre

2

Dites que vous avez un flux de processus simple, juste une source (éditeur) et un puits (abonné). Vous les reliez et le récepteur s'abonne dans l'éditeur et commence à demander des données et les données sont transmises au récepteur. Dans cet exemple, tout ce dont vous avez réellement besoin est un éditeur et un abonné. Mais dans cet exemple, rien n'arrive aux données le long du chemin de la source au puits. Il n'est pas transformé de quelque façon que ce soit et n'est donc pas très intéressant et pas très utile.

Un processeur combine à la fois les interfaces Publisher et Subscriber et peut donc jouer le rôle de ces deux rôles. Un processeur est destiné à être inséré dans un flux de traitement entre la source et le récepteur et à transformer les données. Si j'ajoute un dans l'exemple source/sink d'avant, le flux de données et qui s'abonne à ce qui change. Maintenant, le récepteur s'abonne dans ce processeur et le processeur s'abonne à son tour dans la source. Le récepteur demande des éléments au processeur et le processeur propage cette demande en amont de la source. Il est également responsable de pousser les éléments en aval de l'évier lorsqu'il y a des éléments pour répondre à la demande. C'est pourquoi il doit implémenter les deux interfaces car il doit remplir les deux rôles.

Avec chaque étape de traitement ajoutée, comme map ou filter, vous ajoutez un autre endroit où la contre-pression peut être traitée. Ces étapes ne sont pas le point d'initiation (source) ou la destination (puits) pour les données. Tout ce qu'ils sont censés faire, c'est recevoir des données et faire quelque chose ou en modifier le flux et envoyer des éléments en aval pour répondre à la demande. Parce qu'ils doivent être en mesure de se connecter à n'importe quelle chaîne, ils ont besoin à la fois de la fonctionnalité de publication et d'abonnement, et c'est la raison pour laquelle Processor existe.

+0

Donc, fondamentalement, tout ce qu'il fait est de rester entre les deux, modifier les données si nécessaire et souffler un peu plus? – Rise

+0

@Rise, le processeur permet vraiment tout sur les flux réactifs. Streams est tout au sujet de la manipulation et des données et de modifier les flux et sans le processeur pour y rester pour ces étapes tout ce que vous auriez est une source -> couler flux et rien entre les deux. En étant ce petit Pub/Sub-Pairing autonome, il vous permet de vous lier aux flux existants et de faire des modifications et de gérer la contre-pression et même de modifier l'effet de la contre-pression (via quelque chose comme "buffer") – cmbaxter

+0

être toujours réactif? Le récepteur demanderait toujours la quantité de données qu'il peut gérer, n'est-ce pas? – Rise