 Donc grâce à Qarkis, si tu es prête, Zineb, je te laisse la main et puis on peut commencer. Du coup, voilà, aujourd'hui je vais vous faire un peu comment on fait l'intégration avec Camille Qarkis. Alors moi, pour me présenter rapidement, comme à Disney, je travaille chez Red Hat, plus précisément dans les équipes Red Hat Integration. Je travaille sur le projet Apache Camille et depuis un certain temps, je travaille sur le sous-projet Camille Qarkis à développer et maintenir plusieurs extensions Qarkis pour le projet Camille. Voilà, en dehors de ça, je suis membre actif de l'association du Chaises France et j'habite à Paris. Donc aujourd'hui, je vais vous parler de Camille Qarkis, mais avant ça, je vais faire une petite intro de ce que c'est que Camille. Donc Camille, c'est un framework open source d'intégration qui permet de faire rapidement et facilement de l'intégration entre plusieurs systèmes en faisant des principes de consumer pour consommer de la tata d'un système externe et des producteurs qui vont produire de la tata dans d'autres systèmes externes à nos applications. Le principe, c'est qu'avec Camille, on va créer ce qu'on appelle des routes dans Camille et en fait une route, elle va permettre de transporter de la donnée d'un système A vers un système B. Et plus concrètement, ce qui va se passer quand on va créer une route, c'est qu'en fait Camille va créer ce qu'on appelle des endpoints. Chaque endpoint va savoir dialoguer avec un système externe, que ce soit une base de données, une API, un système de cache, un système de messaging ou autre, système de gestion de fichiers. Et du coup, notre route, elle va partir du coup d'un endpoint qui consomme de la tata vers un ou plusieurs endpoints qui vont produire de la tata dans des systèmes externes. Et tout au long, en fait, de notre route, le message, en fait, il va être dans un objet qu'on appelle Exchange. Cet Exchange, là, il va porter le message qu'on appelle le body, mais il va aussi porter d'autres informations, d'autres propriétés qui sont propres au contexte de cet Exchange-là, comme par exemple, on a des aideurs qui vont contenir des données. Et le routeur, en fait, dans Camille, c'est lui qui va savoir en fait vers où rerouter en fait ce message-là ou pas, suivant les conditions qu'on a, les reroutés vers un endpoint ou plusieurs endpoints ou vers d'autres process. Pour créer nos routes, on utilise l'ADSL-Camille. Donc historiquement, on avait le Java et l'XML, puisque c'était historiquement que des projets Java. Aujourd'hui, sur Camille 3, sur les projets, on voit beaucoup plus de langages qui arrivent, comme JavaScript, Yaml, etc. Mais en fait, le principe, ça va toujours être le même. On va avoir, là, par exemple, on a une route Java et son équivalent en XML. On va retrouver les mêmes keywords. Là, on a From, ça veut dire qu'on est en train de consommer. Là, on a un endpoint de type consumer. Et on va avoir Letoo, qui va être un endpoint de type producer. Donc là, par exemple, ce qu'on fait, c'est qu'on consomme de la data depuis une bucket sur Amazon S3. On fait queloguer le message et on le renvoie à un Telegram bot. La seule chose qu'il faut savoir, c'est que dans les routes, on peut rajouter autant d'étapes qu'on veut, qu'elles soient pour rediriger de la data, aller récupérer de la data, transformer nos messages. Donc on peut avoir des process. Et en fait, c'est comme dans les pipingics. C'est-à-dire que quand on fait une étape, le résultat du message en sortie, c'est ce qui va aller dans l'entrée de l'étape d'après. Donc ici, le log n'a rien fait. Donc on a le même message qui traverse toute notre route. Mais si on avait ici un process qui a changé, modifié notre message, ça serait ce nouveau message-là qui serait envoyé au Telegram bot. Camille en fait reprend une grande partie des design patterns d'intégration qui sont décrits dans le livre Enterprise Integration Patterns que vous pouvez retrouver encore ratuellement sur ce site web qui reprend les Enterprise Integration Patterns. Si vous avez beaucoup de problématiques d'intégration, c'est pertinent d'aller regarder en fait les design patterns qui existent parce que souvent, on réinvente la route. Et sur les patterns qui sont un peu plus compliquées, ça serait bien d'utiliser un framework tel que Camille qui a déjà implémenté la solution. Aujourd'hui, on va voir que des design patterns, dans ma démo, on aura le Content Based Router IP qui est très connu. Ce IP là, il va re-router le message vers une étape ou un endpoint bien précis suivant des conditions. Donc en fait, dans Camille, ça s'appelle Choice pour choix dans la syntaxe de la DSL. Et en fait, on va avoir notre message qui arrive là. On va avoir une liste de conditions. Et suivant ces conditions-là, on va le re-router ou pas vers un autre endpoint. Et aussi, le message Translator IP qui est très connu. L'objectif de cet IP, c'est quand on a deux systèmes qui vont s'échanger un message. Donc là, on a un système A et un système B. Sauf qu'en fait, ils ne dialogue pas de la même manière. Donc leur typologie de données ou bien d'objets est différente. Et du coup, il faudrait traduire le message qui arrive du système A vers le système B. Donc on verra toute la leur deux implementations de ce message Translator. Camille a une vaste librairie de composants. Aujourd'hui, on en a plus que 360. Ici, j'ai mis quelques exemples. On n'a pas 360. Donc ici, on voit un peu tout ce qui est data, des messages, des APIs, publics, private cloud. Mais il n'y a pas que ça. Il y a aussi différents protocoles. On gère différents typologies de fichiers et puis il y a encore d'autres typologies de composants. Donc il suffit d'aller voir sur le site pour voir un petit peu quels sont les connecteurs que vous pouvez utiliser pour votre application. Pourquoi utiliser Apache Camille ? Déjà, premièrement parce que c'est Open Source. Et dans le monde de l'Open Source, c'est la plus grande et la plus active communauté Open Source dans le monde de l'intégration. Pour quelques petits chiffres, les trois dernières années, Camille est dans le top 5 du nombre de comites dans la fondation Apache Software Foundation. Donc voilà, c'est rassurant de travailler sur un projet qui a une communauté aussi active. On est d'ailleurs très active aussi sur notre chat du LIP si vous voulez utiliser Camille, vous pouvez venir sur notre chat et nous poser les questions si vous avez des problématiques. Et on peut se connecter à un peu presque tout parce que tous les connecteurs qui sont les plus connus, on va les retrouver dans le Camille. Donc en général, avec notre vaste librairie, vous pouvez un peu trouver presque tout. Et quand vous avez beaucoup de problématiques d'intégration à s'intégrer à différentes APIs, différentes typologies de base de données, etc., vous pouvez vous focaliser plus sur votre use case métier au lieu de comprendre chaque système externe, quel API il faut que j'utilise, comment fonctionne l'appli, etc. Camille tourne sur plusieurs runtime. Cette liste n'est pas exhaustive. Et aujourd'hui, ce qu'on va voir, c'est la stack Quarkus puisque c'est sur quoi je travaille. Donc Camille Quarkus, c'est un sous-projet, donc c'est un projet à part mais qui est lié et qui dépend du projet Camille. Et en fait son objectif c'est de porter toutes les capacités d'intégration de Camille et sa vaste librairie de composants le Quarkus runtime supersonique subatomique. Donc il y a eu pas mal de travail qui a été fait pour que tout ce qui se fait au démarrage de Camille soit porté aux bulle-stimes. Et après, pour chaque composant, on va créer des extensions et du coup on va faire un travail puisque les composants généralement utilisent des librairies externes et donc du coup il faudrait qu'on s'assure qu'en fait on ait tout ce dont on est besoin pour chaque composant au runtime. Pourquoi du coup on a Apache Camille sur Quarkus parce qu'aujourd'hui du coup comme c'est la mode de travailler sur des containers, sur des environnements telles que Kubernetes et du coup en fait on va bénéficier de tous les bénéfices de Quarkus pour notre projet Camille. Et donc on va avoir le fait de diminuer l'espace disque, le fait de bouter plus vite donc on va avoir des scale-ups qui sont beaucoup plus rapides sur nos environnements Kubernetes et bien sûr on pourra avoir plus de containers dans le même taille de RAM. Et là je vais passer à la démo donc aujourd'hui dans la démo je vais faire en fait 2 consumers je vais commencer par faire un chatbot telegram en utilisant l'extension Quarkus Camille pour Telegram et du coup en fait j'ai déjà créé mon petit chatbot que je vous montrerai tout à l'heure sauf que là tout de suite mon chatbot il ne fait rien du tout si on interagit avec donc en fait l'extension en fait telegram elle va nous permettre en fait de créer certaines interactions du chatbot notre chatbot va recevoir des messages et va envoyer des messages et tout ça on va le faire avec Camille sans connaître en fait comment la paye telegram elle fonctionne et donc ça ça va être la première étape et la deuxième étape on va utiliser le IP qu'on a vu tout à l'heure le Content Based Router pour faire des choix et suivant un cas bien spécifique on va en fait envoyer les messages qu'on reçoit dans un topic Kafka et après bon là dans ma démo je vais tout faire dans la même application pour que ça soit plus simple pour la démo mais en fait il faut s'imaginer qu'on a peut-être deux microservice et donc qu'il y aurait un autre microservice qui va avoir un consumer Kafka qui va consommer en fait ces messages qui arrivent du premier endpoint et du coup qui va en fait le persister en database dans une base de données pour faire un traitement plus tard donc là pour ma démo j'ai utilisé la base de données post-gray mais voilà le code que j'ai fait on pourrait facilement mettre du MySQL ou autre à la place et voilà je vais aller à la démo là du coup moi j'ai déjà créé une application Quarkus en général si vous voulez créer les applications Quarkus déjà je vais vous montrer ça c'est un peu la même chose pour Camel c'est la même chose que pour Quarkus si vous venez là et vous tapez dans le code.quarkus.io si vous tapez Camel vous avez la liste des extensions ici sachant qu'il y a un peu plus d'extensions que sur le code.quarkus.io dans la documentation sur camel.apachi.org on a ici la liste des composants par contre je vais vous montrer si je vais dans camel.quarkus si je vais dans référence là on a les extensions donc aujourd'hui sur les 300 et quelques on est à 314 extensions qui sont déjà disponibles pour camel.quarkus donc un peu moins d'un tiers qui sont juste givets à mon lit donc les givets à mon lit vous les verrez pas ici mais du coup vous aurez toutes les stables et voilà si jamais vous en trouvez pas ici vous pouvez quand même chercher ici pour voir si elle existe et si vous pouvez juste importer le BOM de camel.quarkus dans mon application ici je ne l'ai pas créé avec code.quarkus.io déjà parce que je suis sur des versions qui vont bientôt sortir donc là je suis sur les futures versions 2.0 de quarkus et camel.quarkus qui vont sortir très bientôt dans les jours qui suivent en tous les cas et donc voilà ça va vous permettre de voir un petit peu la future version de camel.quarkus et du coup j'ai importé pour ce fait le camel.quarkus.bom mais si vous trouvez toutes les extensions ici vous n'avez pas en fait à faire ce que j'ai fait vous pouvez juste générer votre application et s'utilisera le quarkus.bom directement parce qu'on est sur la plateforme quarkus.io donc pour mon application ici juste pour aller rapidement j'ai mis toutes les dependencies dont j'ai besoin là j'ai du telegram d'Oscar tout cela ce sont des camel.quarkus après il y a aussi du direct log et bin que je vais expliquer tout à l'heure j'aurai besoin aussi de Jackson pour Marshall et Marshall mes objets de JSON vers mon message etc. et là j'utilise JPA pour mon exemple mais pour utiliser les bases de données il y a plusieurs composants déjà il y a certaines bases de données qui ont leur propre extension et si jamais vous utilisez du relationnel et que vous trouvez pas l'extension de base de données il y a JPA, SQL, JDBC donc il va falloir aller regarder le pour et le contre de chacune et voir celle qui correspond le mieux à votre architecture et avec JPA je vais utiliser PostgreSQL et donc là j'ai l'extension quarkus.jdbc PostgreSQL et je utilise aussi plateforme HTTP pour faire un restain point donc ça c'est juste pour mon petit déploiement sur mon cluster tout à l'heure donc les propriétés aussi j'ai quelques properties pour l'instant celle dont je vais avoir besoin c'est le Telegram token API donc là je vous montrerai du coup mon chatbot j'ai cherché dans Telegram le chatbot fader j'ai suivi les instructions j'ai créé le camel Dev Nation bot que vous pouvez trouver si jamais ça vous intéresse et du coup ça m'a généré un token API que je vais utiliser dans mon application pour pouvoir créer ce que mon bot va faire donc là on va commencer donc ici j'ai une classe que j'ai nommée route vous pouvez la faire ce que vous voulez elle est en route builder donc c'est une classe camel route builder va me permettre d'override la méthode configure et dans cette méthode là je vais commencer en fait à définir mes routes camel et en fait dès que je vais compiler mon application la lancer les routes vont automatiquement se lancer au démarrage donc pour faire un consommateur telegram donc je commence déjà par from et là vous avez vu là j'ai mon petit plugin d'apache camel qui peut m'aider tu fais telegram comme ça il me dit oui il il faut un tip et il me propose bot c'est ça que je veux et là je vais lui passer mon authorization token qui est déjà alors ici en camel pour utiliser les propriétés c'est cette syntax là donc ça va prendre ma propriété qui est définie ici dans mon application point properties et là si je veux juste logger le message entrant je peux faire une commune message et je met dollar body et en fait c'est tout ce que j'ai besoin pour consommer des messages j'utilise la et lui passer mon token et du coup c'est camel qui va se charger d'utiliser telegram bot API pour aller chercher mes informations je vais juste passer un petit peu ma caméra là pour voir mon éditeur donc là si je vais démarrer en fait en mode en dev mode pour avoir les bénéfices d'utiliser coarcus en dev mode alors ici vous avez vu que juste pour ici vu que j'utilise du Kafka et post-cray et que j'ai rien mis dans mon application point properties tout ce que j'ai mis là pour ma database et pour mon Kafka c'est des paramètres pour la prod donc en fait aujourd'hui coarcus a ce qu'on appelle services et donc en fait quand je démarre mon application en dev mode si il détecte que je dois utiliser que je suis en train d'utiliser post-cray mais que je n'ai pas les crés d'un chel en dev mode pour post-cray et aussi en ce qui concerne Kafka en fait s'il va me me démarrer des containers automatiquement j'ai rien à faire et du coup j'ai déjà mon Kafka et mon post-cray quand on en sera là dans la démo donc ici je vais juste faire un quillière ici si je fais Hello donc là on va voir que que mon consumer Kamel a déjà reçu le message Hello mais du coup là mon bot il fait rien en fait je suis un utilisateur j'envoie un message il ne me répond pas et donc bah là je voudrais bien lui renvoyer mon message du coup bah là en fait je vais faire un tout et tout ce que j'ai dit tout à l'heure c'est un producer et en fait je vais utiliser la même syntaxe avec le même aucun appellis de mon bot là il va que faire un live reload vraiment très rapide et du coup cette fois-ci si je lui renvoie Hello 2 il me renvoie mon message Hello 2 en général ah quelqu'un m'a envoyé un message merci du coup bah là en fait ce qui serait sympa c'est que mon du coup juste pour voir que là j'ai pas eu le top Zineb parce que c'est quelqu'un d'autre qui a utilisé mon bot ce que j'ai expliqué tout à l'heure quand j'ai fait mon espèce de schéma avec l'exchange c'est que du coup mon exchange il a le body mais il a aussi le contexte donc dans le header il a le chat ID donc il sait que pour chaque contexte de message à qui là en fait ici Kamel le consumer il a créé ses headers et ses headers ils vont transiter jusqu'à la fin vu que je n'ai rien fait pour supprimer ce header là il va connaître le chat ID donc le bot il saura à qui il doit répondre ça serait bien en fait que là je transforme un peu le message donc je vais faire le message translator et là je vais faire un truc très simple je vais utiliser pour un transform simple et je vais dire merci pour ton message et donc là on l'essaye de faire le library load et du coup si je fais un elo 3 je vais me dire merci pour ton message maintenant moi en fait ce que je voudrais c'est c'est en fait un moment je vais vouloir avoir des messages je voudrais aussi savoir ici juste pas que le body je voudrais savoir par exemple le nom de la personne qui me l'a envoyé et puis l'ID du message et donc du coup pour ce faire je vais utiliser un bin donc là c'est assez standard je vais faire un telegram bin et dans ce telegram bin je vais essayer de prendre le message que j'ai reçu je vais dire ici le body c'est juste une abstraction ça prend le texte qui arrive et en fait ce que fait le consumer Camille il crée un incoming message alors le texte c'est ce que vous avez vu mais en fait si il y a d'autres informations là je voudrais le message ID et je voudrais le user donc bon là c'est une démo je suppose qu'il y a que des users et pas des bots qui m'envoient des messages et donc sinon dans le incoming message vous pouvez voir qu'en fait si vous créez votre bot un bot un peu plus sympa avec telegram plus tard vous pouvez avoir des photos, des vidéos des documents, des stickers etc bon moi en fait je vais rester juste sur le texte parce que je suis dans une démo donc en fait ce que je vais faire c'est que je vais faire un bin je peux créer une méthode qui va me retourner un string mais ça va être un gson où je peux l'appeler Translate le nom de la méthode n'a aucune importance là je mets un incoming message parce que je suis sûre moi en fait c'est un incoming message que je reçois et là en fait ce que je vais faire c'est que je vais retourner et là en fait je crée un string donc un gson avec l'ID et là je vais passer l'ID du message le texte et le username j'ai pris le frame firstname et lastname je vais juste faire ça pour si jamais on passe en natif et là ce que je vais faire dans ma route c'est que là je vais faire un bin et je vais utiliser mon telegram bin normalement si j'ai plusieurs méthodes comme j'ai une seule méthode normalement ça devrait fonctionner on peut relogger encore juste pour regarder on a changé donc là aussi ça soit bin ou transforme dans les deux cas on a utilisé le message translator je vais pas trop réfléchir au texte on va faire du live reload je vais faire un locats et là du coup il y a une message elocats et là on l'a transformé avec notre bin on a fait un id un elocats et un username il a bien pris zineb bendiba donc là on est quand même pas mal ça veut dire que notre message c'est un gson on pourrait le prendre et le mettre dans notre topic Kafka mais avant ça c'est utiliser le choice donc en fait ce que je voudrais c'est qu'on va mettre les messages dans topic Kafka que uniquement s'ils contiennent le indies message donc là ce que je vais faire c'est que je vais enlever en fait ces logs là donc là j'ai bien transformé mon message ce que je vais faire c'est que je vais pour que ma route ne soit pas très complexe je vais vouloir faire une entrée avec les directs là on va mettre process message par exemple et en fait cette point là c'est une entrée en fait c'est juste qu'à ce moment là je voudrais ici processer mon message et donc là je vais le balancer le message que j'ai, l'exchange que j'ai modifié ici je vais le balancer au direct process message direct en fait c'est pas lié à un techno bien spécifique ça nous permet juste d'avoir une petite entrée pour créer notre route et ici en fait c'est pas très pertinent de créer ce texte là je vais juste le mettre un peu plus donc en fait ici je vais faire un choix si le body que j'ai reçu que j'ai traité ici va contenir start donc ici tout ce qui est simple là c'est un un langage d'expression donc si il contient start je vais lui donner ce texte là que j'ai défini dans mon application point properties où je vais dire bienvenue à definition France etc et je vais aussi dire à l'utilisateur ce qu'il peut faire et si il contient message ça c'est le message que je vais vouloir tout à l'heure envoyer sur Kafka pour qu'il y ait un autre consumer Kafka qui le persiste en base et sinon je vais dire j'ai pas compris tu peux essayer start ou 10 messages et donc ça c'est le content base router ça veut dire qu'à un moment on fait des choix si j'ai ça je fais ça si je vais ça je fais ça ici on va voir que dans tous les choix et si on n'est pas dans le bon choix on a le other wage je transforme toujours mon message et à la fin je vais le renvoyer encore à mon telegram et du coup si je refais un hello thank bah là il me dit je ne sais pas si je fais un start j'ai mon message par contre là je les fais en markdown c'est pas très joli parce que là les liens et tout sont pas vraiment jolis donc avant d'envoyer au telegram j'ai ajouté un header et en fait qui existe dans mon composant pardon importe les classes et en fait c'est un c'est un header qui va donner à telegram le parse mode et ici bah moi je lui spécifie que c'est du markdown on peut aussi faire du html donc là s'il fait le library load si je refais mon start là c'est plus joli j'ai tout ce qui est en gras pardon et là j'ai le lien vers mes slides vers mon code source et ça me dit que je peux en fait envoyer un message en commençant mon message par 10 messages du coup là en fait on va faire ce que le 10 message va faire en fait quand je reçois un message avec 10 messages je veux l'envoyer dans un topic casca mais je vais l'envoyer avant de transformer donc ça veut dire que dans cette condition là d'abord je vais envoyer le message en format gson tel que je l'ai fait avec le bin en utilisant le ip et après je vais transformer mon body pour répondre à l'utilisateur donc ce que je vais faire tout simplement c'est que je vais l'envoyer à casca on va se dire que le topic bah je vais l'appeler topic pas exemple et c'est tout ce que je dois faire si je veux regarder être sûr qu'en fait que dans ce contexte là en fait on a bien envoyé le message au topic casca je peux faire un consumer donc cette fois si je vais utiliser from je vais utiliser le même nom on n'a pas à avoir des problèmes de typo et là je vais logger je vais dire Incoming message from casca et là je vais mettre mon body voilà j'ai rien à faire là pour envoyer à casca c'était ça pour récupérer à un moment tout ce qu'on a besoin normalement pour la prod c'est juste les crées d'un shell là tout à l'heure quand je vais déployer j'ai l'url de casca broker parce que pour mon cas à moi pour la demo je n'ai pas d'authentification avec ça celle ou autre mais c'est uniquement ce dont on a besoin si le topic il n'existe pas il va le créer de toute manière donc là on va se dire non ça fait le library load là si on a le start on n'a pas le Incoming message from casca si je fais un peu n'importe quoi sans message aussi on a un message le premier mais j'ai pas from casca et là on va voir si la demo elle fonctionne et là en fait on a bien le incoming message et a priori il a été envoyé dans le topic casca et il a été consommé depuis le topic casca maintenant moi je vais passer du coup à la deuxième partie de la demo où en fait je voudrais persister ce message là dans une base de données et en utilisant jpa et du coup là je vais créer ma classe dans titeler déjà alors je l'ai déjà je vais l'appeler telegram message et en fait bah du coup elle va reprendre en fait les mêmes informations qu'on avait tout à l'heure dans Jason qu'on a créé là il dit le texte et le username et du coup c'est une classe du coup qui est at entity et du coup je pourrais utiliser jpa donc ici ce que je vais faire c'est que je vais utiliser un producer jpa et je fais jpa de point plus le telegram message que j'ai créé un classe un getname bien sûr il me faut un tout ça ne va pas marcher là normalement Camille il sait que du coup si il a jpa plus uniquement le nom de mon entité bah en fait il va persister le message parce qu'il n'a pas d'autres informations qui va dire il faut faire une opération en base de données une petite subtilité c'est que le message qui les met tous les messages qui arrivent d'un topic Kafka sans Jason et là il va falloir que ça soit un telegram message du coup là tout d'ailleurs j'avais utilisé Camille Coarchus Jackson je vais utiliser Jackson en fait pour pouvoir en fait transformer mon message dans un bin java et là je crois que j'ai mis un tout non je l'ai plus donc je vais mettre un marchal voilà j'ai juste un marchal j'espère que je ne me trompe pas et je voudrais une fois que je fais ça on va déjà voir si le code ça fonctionne déjà j'ai pris beaucoup de temps c'est ça non c'est juste qu'on ne peut pas plus sur la caméra est-ce que tu peux zoomer un petit peu ton intelligent ah mass ça va là un peu plus encore un petit peu oui merci ça rien donc là si je fais un message et le 6 ça a l'air de bien fonctionner du coup bah moi en fait ce que je voudrais c'est juste à ficher créer un endpoint rest get ce qui va aller récupérer tout ce que j'ai dans la base en utilisant toujours JPA donc là ce que je peux utiliser alors il y a il y a on peut utiliser rest ou on peut utiliser plateforme HTTP moi je vais utiliser plateforme HTTP là si je fais alors j'ai fait une erreur c'est bien d'utiliser si je fais la complétion bah en fait mon plugin il me dit il faut que je mette le patch là mon patch je vais dire que c'est message et là je vais lui dire que je veux faire une méthode get c'est comme ça en fait la syntaxe du plateforme HTTP et en fait celui là il va utiliser en fait il va me créer un rest endpoint get avec cette URL là, ce patch là et en fait ça va s'inscrire dans la plateforme dans laquelle on est donc là tout de suite par exemple on est dans Quarkus donc c'est pour la plateforme Quarkus ça utilise de mémoire Vertex et du coup une extension de Quarkus et là je vais utiliser encore mon video mais je vais lui dire d'aller faire en fait une query c'est à dire que là je lui demande de ne pas persister ce qui n'y a rien qui arrive avec mon get et là je vais lui dire de prendre la name query find all cette name query find all elle est là je l'avais définie dans mon entity alors si jamais vous voyez pas très bien donc c'est du jp1 de base où là je lui dis juste de tout sélecter de mon telegram message il y a d'autres façons de faire là j'ai fait une name query vous pouvez faire une autre typologie de query à avoir donc ça c'est mon exemple il y a juste un truc c'est que là ça va me retourner un réaliste Java et moi je suis censé retourner un JSON donc là je vais juste je vais juste faire l'inverse de ce que j'ai fait tout à l'heure en fait je vais tout renvoyer en JSON et là j'ai le live reload si je vais là localhost si je mets message j'avais un message et le 6 si je refais un autre message voilà donc du coup là c'est un peu du coup la fin de ma démo en tous les cas en terme dev j'ai voulu un petit peu vous montrer des EIP d'intégration dans camel et comment aussi utiliser une API comme telegram utiliser du Kafka vraiment facilement pour consommer et produire de la donnée on n'a besoin que de ça pour utiliser des bases de données et pour créer un rest end point assez rapidement pour pouvoir exécuter une route camel donc maintenant ce qui serait bien c'est que je puisse du coup alors j'ai mis ça là pour ne pas me tromper comme d'hab c'est le déployer sur mon cluster donc j'espère que ça va être rapide donc là en fait ça va me pkj mon application en mode jvm et ça va me déployer sur mon Kubernetes j'utilise des extensions coarchus donc en fait il y a coarchus kubernetes mais moi en fait mon cluster c'est un cluster openshift openshift c'est une distribution de kubernetes donc c'est un kubernetes mais avec des trucs en plus et moi en fait j'ai mon propre cluster openshift sur adwvs donc j'installe rien sur ma machine et là en fait j'ai des informations pour containeriser j'ai quelques quelques trucs ici pour du coup là j'ai mis en mode push donc ça va prendre du temps j'ai quelques informations donc là pour mon installation et si on part du coup sur mon cluster ici j'ai déjà installé streamz l'opérateur et j'ai une instance Kafka qui tourne j'ai installé mon postcre opérateur et j'ai une base de données qui tourne dans mon cluster et j'espère que ça va être rapide ça arrive ça arrive et sinon ce que j'ai pas montré tout à l'heure c'est que ici moi j'ai utilisé que des variables d'environnement pour mon bootstrap url et mes credentials pour la base de données du coup moi j'ai la caméra devant excusez-moi dans mes secrets ici j'ai mon definition secret qui a toutes les informations sur mon Kafka, ma base de données mais aussi tout à l'heure j'avais mis telegram le token et on attend juste qu'est-ce que ça déploie j'ai encore un peu de temps je me sens seul qu'est-ce que je peux dire d'autre oui je pourrais dire aussi autre chose sinon tu peux aussi reprendre vos questions il y a quelques questions en attendant que ça déploie qu'est-ce que tu en penses oui je les vois pas alors je peux te déposer en fait c'est sur la partie Q&A tu as une première question de qui demande quelle est la différence entre Kamen et Kafka Kamen c'est un framework qui va permettre d'intégrer avec un peu tout pas forcément du Kafka on a du RabbitMQ du AMQ mais en fait Kafka c'est juste un composant qu'on va avoir dans Kamel et du coup quand on utilise Kamel si on veut faire du Kafka on va utiliser le consumer ou le producteur on va en fait mettre dans nos dépendances du Kafka par contre effectivement il y a un autre projet Conect qui lui est full Kafka et ça permet en fait de mixer les les consumers et producteurs Kafka avec d'autres composants ça c'est un autre projet qui s'appelle Kamel Kafka Conect tu as une autre question de Vincent pouvez-vous parler du côté Polyglot par exemple un on-point script Ruby par un consumer type shell et le fait qu'on peut avoir Truffleur Ruby dans Graal VM à côté de Quarkus par exemple franchement je sais pas trop il faut que je regarde moi sur la partie Quarkus j'utilise que du Java c'est vrai que les langages que j'ai vus que j'ai précisé tout à l'heure ils sont plus utilisés dans le projet mais le quai dans lequel on ne crée pas de projet Java après il faut que je me renseigne sur cette question-là il y a encore une question toutes les images que Contenérisé utilisé par Porpus et Kamel sont-elles une petite architecture donc est-ce qu'ils sont supportés par exemple sur PC 64 ou un peu comme Quarkus je pense que oui mais je suis pas très sure mais en fait on utilise la même stack Quarkus donc il n'y a pas de si ça fonctionne pour Quarkus ça fonctionne pour nous aussi et je pense que c'était tout pour la question du coup ça a plus déployé ou pas non mais du coup je vais peut-être basculer sur un autre cluster donc là j'ai un cluster sur lequel j'ai déjà déployé et là j'ai déployé en natif c'est à dire que j'ai compilé en natif avant de déployer ici je l'avais scalé à 0 là je peux le scaler à 1 et du coup il a déjà démarré très rapide là il a starté en 84ms Camel si si je le risque à 0 en fait là je scale toujours à 1 parce qu'en fait Telegram il veut pas avoir plusieurs consumers donc je suis en fait sur un type de et donc là en fait au deuxième donc si vous avez déployé que vous faites un scale app d'une application vous allez voir que là Camel a démarré il a démarré les quatre routes et il a démarré en juste 19ms et l'application gros a démarré en 0,553ms sachant que quand les routes elles démarrent en fait il y a enfin on va vérifier aussi que les crédentiels Kafka sont bons etc donc voilà c'est assez rapide là si je vois mes sages du coup là j'ai ça j'ai fait ça hier 21,06 2021 et là si je reprends mon bot si je fais start ça marche donc là en fait il est connecté à cette instance là parce que comme j'ai dit mon Telegram bot il peut être connecté à un seul consumer donc si je fais message Hello from my demo normalement si je vais là je vais le trouver mon message je sais pas si vous voyez ou pas il est là disinez bien voir que tu conclusion oui du coup je t'avais pas j'espère que j'ai fait un peu d'un peu tout là j'ai mis quelques quelques liens donc là il y a le lien du projet là il y a mon github je sais pas si je peux envoyer ou bien je l'envoie sur le Slack peut-être le lien de mes slides et ben voilà sinon j'espère que ça vous a plu et que ça vous donne envie de découvrir Kamel Quarkus et puis n'hésitez pas à me retrouver sur Twitter ou github et à m'envoyer des messages si vous avez d'autres questions et à rejoindre notre Zulip Kamel si vous avez toutes questions techniques oui et n'oubliez pas que le Slack reste resté ouvert après l'événement vous pouvez toujours également contacter tous les speakers de l'événement via ce Slack donc il n'y a pas de problème donc là ben merci bien Zinev c'était très sympa pour pouvoir nous créer en quelques commandes une route et connecter tous tous tes outils c'était vraiment sympa donc la track 2 je vais l'arrêter car on va retrouver sur la track 1 pour la bataille navale donc on se retrouve tous sur la track 1 à tout de suite et on revient après ici pour le code radio workspace et un autre talk après sur l'authentification par Valerian voilà à tout à l'heure à tout