2016-11-12 1 views
0

Si le nœud plante et qu'à ce moment-là les messages sont mis en file d'attente dans la boîte aux lettres, comment ces messages seront-ils retraités? Si elles ne peuvent pas être retraitées alors comment pouvons-nous dire que le modèle de programmation Akkka est tolérant aux pannes. C'est le cas d'utilisation le plus basique pour lequel nous devons utiliser des files d'attente persistantes en ce moment.Comment faire pour récupérer les messages en file d'attente dans l'acteur akka en cas de panne de noeud?

Répondre

3

Les messages ne seront pas traités et seront perdus; Akka ne garantit pas la livraison des messages - ceci est explicitement indiqué au début de sa documentation. Cependant, ceci n'empêche pas de rendre le programme tolérant aux pannes. L'un des moyens les plus simples de le faire consisterait à implémenter des messages avec des accusés de réception et à obliger les acteurs à renvoyer des messages non reconnus.

+0

Bien que je suis d'accord avec votre logique ici, mais souhaite qu'il était si simple .. Si c'était si simple, il n'y avait pas besoin d'utiliser un cadre de microservices comme Akka. C'est l'une des principales raisons de ne pas être aussi populaire qu'elle devrait l'être. Akka était censé résoudre ces problèmes pour moi et jusqu'à ce qu'ils fassent leur graphique de popularité sera à peu près stagnante et les gens préféreront des courtiers comme kafka –

+0

@ MarutSingh, vous confondez différentes choses. Akka n'est pas un courtier de messages et ce n'est pas un framework de microservices, c'est une implémentation d'un * paradigme de concurrence *. Comme CPS (canaux et coroutines, pensez Go) ou des threads nus. Akka n'est pas destiné à remplacer les bus de messages; en fait, ils peuvent très bien se compléter. Par exemple, j'ai travaillé sur des projets où nous utilisions RabbitMQ comme moyen de communication entre différents processus, tandis que les processus eux-mêmes étaient construits avec Akka en interne et utilisaient également Akka pour le clustering. –

+0

Ne soyez pas d'accord avec votre pensée ici ... Akka est un framework microservice au moins maintenant et Typesafe le promeut comme tel. Les microservices ont besoin de découverte, d'équilibrage de charge, de communication et Akka fournit la plupart des services hors de la boîte. Ce n'est pas un substitut pour le message mais mais il utilise le bus de messages en interne .. seule chose est que vous n'installez aucun logiciel externe car il est peer to peer. C'est la même chose que vert.x.Si vous utilisez akka pour le clustering, où est-ce que RabbitMQ entre en photo? –

0

Toute la pile de typesafe est construite autour de microservices .. Si vous avez des doutes alors lisez leurs présentations .. Akka diffuse Alla HTTP ils sont tous dans cette direction ... On dirait que votre vue de Microservice est différente de la mienne ... Vous avez manqué le point principal .. Problème distribué d'architecture tolérante aux failles était censé être résolu par Akka .. Si vous utilisez rabbitmq alors vous n'obtiendrez pas tous les avantages de akka .. Comme la transparence de localisation .. Acteur heiraarchy..do post votre schéma d'architecture sur les forums Akka et voir ce que vous obtenez réponse

+0

Toute la pile de typesafe est construite autour de microservices .. Si vous avez des doutes alors lisez leurs présentations .. Akka diffuse tous les HTTP d'Alla dans ce sens ... Il semble que votre vue de Microservice soit différente de la mienne ... Malgré cela vous avez manqué le point principal .. Le problème distribué d'architecture tolérante aux failles était censé être résolu par Akka.Si vous utilisez rabbitmq alors vous n'obtiendrez pas tous les avantages de akka .. Comme la transparence de localisation .. Acteur heiraarchy..do poster votre diagramme d'architecture aux forums Akka et voir quelle réponse vous obtenez –