0
votes

Modèle de programmation fonctionnelle Définition de la définition et de la fonction de printemps-nuage + Intégration de printemps-nuage

Salut tout et une équipe spécialement printanière!

Comment puis-je fonctionner de pipeline-Spring-nuage avec le flux de printemps dans le style de modèle de programmation de haricot fonctionnel?

Par exemple j'ai POM.XML Avec les deux dépendances: xxx

et disons que je voudrais faire ensuite:

  1. Envoyer via une chaîne de charge utile HTTP via la fonction de nuage de ressort (Webflux)
  2. en majuscule en utilisant ma fonction TUPpercase
  3. et enfin d'envoyer en avant dans mon pipeline au liant installé (Kafka / lapin / test de test)

    Je m'attends à ce que je m'attends à mettre en œuvre, comme: xxx

    Alors, lorsque j'utilise httpie pour envoyer une charge utile, comme: xxx

    la fonction de printemps-nuage semble fonctionner correctement et je peux voir le journal attendu: xxx

    même penser si je suis Message de publication via une interface utilisateur Web de gestion de la Rabbitmq, mais comment je peux pipeline de l'une à une autre

    donc ma question liée à Selon la documentation du ressort qui dit que je peux également utiliser le flux de printemps-nuage: wrappers pour @Beans de type Fonction, consommateur et fournisseur, les exposant au monde extérieur comme des critères d'extrémité HTTP et / ou des écouteurs / éditeurs de messages avec Rabbitmq, Kafka, etc., mais je ne peux pas comprendre comment?

    Au moment, malheureusement, Je ne peux que publier manuellement un message à un liant à Spring-Cloud-Stream à l'aide de la source Voir exemple ici , mais c'est bien sûr ce que je veux savoir s'il est possible de éviter avec le printemps, magiquement ...

    Peut-être que quelqu'un me dit quelqu'un (peut-être que Gary Russell, Dave Sawyer, Artem Bilan, Oleg Zhurakousky ou quiconque qui sait): Qu'est-ce que j'ai manqué et comment je dois configurer mon app ou quels accessoires je devrais ajouter mon application.properties, etc.

    merci!


    regarde, Maksim


2 commentaires

Maksim, si je comprends correctement, vous voulez http -> fonction (s) -> lapin correct?


Bonjour oleg! Oui, je veux juste que je veux juste fournir les définitions de fonctions pour les deux: la fonction de fluide à ressort et le flux de printemps-nuage et de la configuration de Somethe configure le pipeline de flux de données ... donc partout où la fonction de nuage à ressort sera déclenchée par une personne via le repos, il est de la production Transférer à côté du flux de printemps, selon la configuration à l'aide de lapin / Karfka. Pour le moment, j'ai pu avancer les données de fonctionner uniquement manuellement, mais ce serait génial si je ne devrais pas injecter la source et l'utiliser manuellement pour transmettre des données en file d'attente.


3 Réponses :


1
votes

Maksim

Ce n'est pas idéal, mais étant donné que nous avons mis en place un support de fonction initial dans le cadre des liants existants, certaines limitations. Je vais expliquer, mais d'abord ici, le code entièrement fonctionnel: xxx

Il y a un peu d'un missmatch. Sur le côté du flux, nous avons des liants et sur le côté de la fonction que nous avons des adaptateurs. Vous êtes effectivement (avec votre exigence) tente de combler les deux dans un pipeline. Donc. . .

Regardons d'abord les liants.

La fonction majuscule est liée à entrée et sortie fourni par le canal de message Reliures (lapin ou kafka), créant efficacement une pipeline interne entrée -> majuscule -> sortie . Il est également exposé comme point de fin de repos par S-C-Fonction, cependant, la fonction S-C n'a pas accès au pipeline mentionné. En fait, il a en fait sa propre pipeline demande -> majuscule -> Répondre . Donc, ce que nous devons faire est de combler les deux concepts ensemble et c'est effectivement ce que j'ai fait.

  • Vous injectez votre application avec Processor Liaison qui contient des références aux canaux majuscule est liée à.

  • vous invoquez consommez () via le repos http: // localhost: 8080 / consommer / bla .

  • Vous envoyez un message au canal d'entrée de la fonction majuscule

    Dans l'avenir pour simplifier cela, nous avons simplement besoin de créer une version d'adaptateur Web ressemblant à un liant, alors n'hésitez pas à soulever une demande de fonctionnalité. Mais comme vous pouvez le constater, la solution de contournement actuelle n'est pas tout ce qui impliquait.


2 commentaires

Hey Oleg Zhurakousky, merci pour vos commentaires! J'ai deux questions: 1) Avons-nous vraiment besoin de processeur dans ce cas? Je pensais que la source serait suffisante au cas où nous n'avions besoin que de mettre des données en pipeline. 2) Avez-vous manqué @enableBinding (processeur.class) ou n'est plus nécessaire? Par exemple, vous avez fourni, je reçois une erreur: Dispatcher n'a aucun abonné pour canal 'Application.Integrationflowcreator.channel # 0'.; exception imbriquée est org.springframework.Integration.MessageDisPatchingException: Dispatcher n'a pas d'abonnés


Oui, la source suffirait. En ce qui concerne AcompteLinding, oui, il n'est pas requis dans le cas ci-dessus, mais vous auriez besoin de la dernière version du flux ou de l'ajout d'acompte



0
votes

C'est plutôt une question à Oleg Zhurakousky. Serait heureux de répondre à

Si j'utilise @bean fournisseur ... pour lier la destination de sortie, comment l'invoquer à partir d'un @service classe ou @Controller classe chaque fois qu'un nouveau pojo doit être envoyé à kafka / lapin.

fournisseur n'expose qu'un get () méthode.

J'écris uniquement le producteur qui écrira un Pojo à Kafka et une application différente est le consommateur. L'approche fonctionnelle est plus claire pour un consommateur ... où il se lirait de la Kafka et du processus. Le fournisseur ... partie du producteur n'est pas clair.

https://www.youtube.com/watch?v=nui3HXZCBK0&T=3478S


0 commentaires

0
votes

@ABHISHEK

Vous pouvez utiliser émetteurProcessor comme décrit ici . L'exemple fourni utilise le point d'extrémité de repos lors de la source réelle des données, mais comme vous pouvez le constater que cela ne doit pas compteur car tout ce que vous avez à faire est d'appeler Onnext Fonctionnement du Emiti SterProcessor Transmettre votre événement du service.


0 commentaires