5

Je voulais trouver d'autres façons de faire un modèle d'observateur asynchrone sans utiliser Message Queue. Les idées et les exemples sont généralement les bienvenus. :-) (Pensez à cela comme une séance de brainstorming).Modèle d'observateur asynchrone

PS La préférence linguistique dépend de vous.

Répondre

1

En Java, vous pouvez soumettre des tâches de notification à un Executor qui gère un seul thread de groupe de threads qui sont tous responsables de la gestion des événements observables. Vous avez toujours une file d'attente, mais au lieu d'une "file d'attente de messages" dans le sens traditionnel, c'est une file d'attente de tâches de notification.

1

L'approche évidente et la plus simple serait de commencer un nouveau thread dans le sujet pour chacun des observateurs inscrits au sujet, et laisser ces fils à exécutez chacune des méthodes "update()" des Observateurs.

Une approche plus sophistiquée serait d'utiliser une classe de middleware comme un bus pour laisser le sujet « envoyer événements » à elle. Cette classe de middleware utiliserait plusieurs threads pour invoquer tous les observateurs "enregistrés", mais cela commence à diverger du modèle Observer classique. Quoi qu'il en soit, avec cette approche, vous empêchez le sujet de traiter les discussions. Cette approche serait très flexible pour mettre à l'échelle "types d'événements", avec de nombreux sujets et de nombreux observateurs s'inscrivant à la classe middleware pour des types arbitraires d'événements.