Question

Je viens d'un fond web où je ne traiter HTTP si s'il vous plaît excuser mon ignorance.

J'ai une application où les clients qui écoutent des changements dans une file d'attente de messages qui utilise Stomp. Auparavant, le client ne devait écouter les canaux appropriés pour les messages en leur disant des changements sur le serveur et se mettre à jour en conséquence. choses simples.

Il y a maintenant une exigence pour le client de pouvoir modifier les données et pousser ces modifications sur le serveur. Les données sur le serveur est déjà exposé par des ressources reposant donc ma première pensée était juste de faire REST mettre des demandes de modifier les données sur le serveur, mais j'ai commencé à me demander si je pouvais trouver une solution en utilisant la messagerie. Je pouvais ouvrir un autre canal que les clients peuvent publier des modifications et le serveur peuvent souscrire à ce canal et se mettre à jour en conséquence. La mise en œuvre ce serait évidemment simple, mais j'aimerais avoir quelques-uns des pièges potentiels me fit remarquer à l'avance.

Je connais REST donc je veux poser quelques questions dans le contexte de repos:

  • Est-ce que je mapper un groupe de files d'attente aux verbes REST / CRUD pour chaque ressource à savoir itemPostQueue, itemPutQueue, itemDeleteQueue?
  • Qu'en est-il GET est comment puis-je demander des données à lire en utilisant une file d'attente?
  • Que dois-je utiliser pour remplacer mon mécanisme de code d'état pour attraper des problèmes ou est-ce que je viens de feu et d'oublier (gulp) ou utiliser les en-têtes erreur / réception dans Stomp en quelque sorte?

Toutes les réponses et conseiller sera très apprécié.

Cordialement,

Chris

Était-ce utile?

La solution

Alors que je ne suis pas clair pourquoi vous doit utiliser la messagerie ici, quelques réflexions:

peut carte immobilisant sur le fil comme itemPostQueue, mais cela se sentirait probablement contre nature à une personne orientée message. Si vous utilisez une sorte de file d'attente avec une garantie sémantique et de fournir une seule fois construit, puis aller de l'avant et d'utiliser ce mécanisme. Pour un exemple caddie, vous pouvez mettre un message AddItem sur le fil, et vous faire confiance à l'infrastructure pour livrer une fois au serveur.

Il n'y a pas directement GET comme notion ici dans le message en file d'attente. Vous pouvez simuler avec une paire de messages, je vous envoie une demande et vous me renvoie une réponse. Cela ressemble beaucoup RPC, mais encore découplée. Donc, je vous envoie une demande de PublishCart et plus tard, le serveur envoie un message CartContents sur un canal que le client écoute.

Les codes d'état sont plus complexes, et en général se divisent en deux camps. Tout d'abord les messages de file d'attente bibliothèque réelle - traiter avec eux comme vous le feriez pour tout message système normal. Deuxièmement, vous pouvez avoir vos propres messages que vous voulez mettre sur le fil que le signal à un échec dans la chaîne.

Une chose que la messagerie fait est de découpler considérablement votre application. Contrairement à HTTP, où vous savez que quelque chose est arrivé, avec une file d'attente, vous envoyez une lettre à quelqu'un. Il peut y arriver. Le postier pourrait tomber dans la neige. Le chien peut manger. Si vous ne recevez pas de réponse dans un certain temps, vous essayez d'autres moyens de communiquer avec vos proches, ou pour retirer l'analogie, de contacter le serveur. La surveillance de la santé de l'infrastructure de file d'attente et la profondeur des files d'attente et la prise comme une importance accrue, car ils sont la plomberie que vous êtes maintenant en fonction.

Bonne chance

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top