Interprozess-Pubsub ohne Netzwerkabhängigkeit

Angenommen, ich habe keine Netzwerkkarte auf meinem Computer installiert und möchte eine ähnliche Funktionalität wie die folgende haben:

Prozess 1 veröffentlicht Nachrichten an eine URI, z. B. "Uri1".

var publisher = new Publisher("Uri1");
publisher.publish(new Message("Somedata");

Prozess 2 wartet auf Nachrichten auf "Uri1" und veröffentlicht Nachrichten auf "Uri2".

var subscriber = new Subscriber("Uri1")
subscriber.MessageReceived += data => Console.Writeline(data.ToString());
var publisher = new Publisher("Uri2")
publisher.Publish(new Message("SomeMoreData"))

Prozess 3 wartet auf Nachrichten von beiden URIs

var subscriber = new Subscriber("Uri1")
subscriber.MessageReceived += data => Console.Writeline(data.ToString());
var anotherSubscriber = new Subscriber("Uri2")
anotherSubscriber.MessageReceived += data => Console.Writeline(data.ToString());

Alle Prozesse laufen auf demselben Computer. Nach einigen Recherchen glaube ich, dass MSMQ der richtige Weg ist (Warteschlangennamen als URIs zu verwenden), aber die Implementierungsfrage bleibt offen. Ich bin auf verschiedene Möglichkeiten gestoßen:

MSMQ direkt verwenden
Das Problem, das ich bei diesem Ansatz habe, ist, dass ich die Warteschlangen selbst verwalten müsste, z. Schöpfung, Bevölkerung, Säuberung ... auch von dem, was ich lese, kann ich auf viele Fallstricke und Einschränkungen von MSMQ stoßen, da ich nicht damit erfahren bin

VerwendenNServiceBus, MassTransit oderRhinoServiceBus (alle verwenden MSMQ) Sie scheinen alle kompetent zu sein, besonders NServiceBus, aber ich kann aus der Dokumentation nicht herausfinden, wie ich die grundlegenden Pubsub-Funktionen aus ihnen extrahieren kann, damit ich sie in einer Schnittstelle ähnlich der oben genannten einkapseln kann

VerwendenWCF (über MSMQ) Auch dies sieht nach einer guten Option aus, aber da ich weit von einem WCF-Experten entfernt bin, möchte ich sicherstellen, dass dies der richtige Weg ist, bevor ich mich damit befasse

Unser bisheriger Ansatz stützte sich auf PGM-Multicast, der gut genug funktionierte, aber die neue Anforderung, ohne Netzwerkkarte zu arbeiten, zwingt uns, zumindest meines Wissens, dazu, einen anderen Mechanismus für die Offline-Arbeit zu verwenden

Vielen Dank!

Antworten auf die Frage(2)

Ihre Antwort auf die Frage