0

Ich habe einen Windows-Dienst, der außerhalb meines Azure Service Fabric ausgeführt wird. Ich muss in der Lage sein, zuverlässig Nachrichten von dem Windows-Dienst zu meinem Stateful-Service-Fabric zu senden (über HTTP, da dies in einem separaten Netzwerk sein wird), vorzugsweise unter Verwendung von NServicebus. Ich bin mir unsicher, wo ich anfangen soll, ich habe NServicebus auf meinem Windows-Dienst installiert. Das Netzwerk ist äußerst unzuverlässig, daher ist eine dauerhafte Nachrichtenübermittlung entscheidend.Senden Sie zuverlässig eine Nachricht vom Windows-Dienst an den Service State Service von Azure Service Fabric mit NServicebus

Antwort

1

Wenn Sie bereits Ihre Service Stofflösung in Hosting Azure Ich würde empfehlen, die Sie verwenden Azure Service Bus Transport mit NServiceBus Nachrichten (Warteschlangen oder Themen) auf Ihr Microservice.

Es wird einige Boilerplate-Codes geben, die in den Microservices implementiert werden, um die Nachrichten zu empfangen und zu konsumieren, aber es kann mit Dependency Injection während des Bootstrappings Ihres Dienstes (Startup) verwaltet werden.

+0

Absolut, ich plane die Verwendung von Azure Service Bus als Transport. Mein Szenario ist, dass ich eine Datensammlungsanwendung auf einem physischen Computer in einem anderen Netzwerk habe, während meine Microservices & Reporting-Apps in der von der Dienststruktur verwalteten Cloud sitzen. Ich verstehe, wie die Dienste innerhalb des Gefüges miteinander kommunizieren würden, aber was ist mit einem Dienst außerhalb von azurblau? – adam3039

+0

Die Datenerfassungsanwendung muss irgendwie mit Ihren Microservices kommunizieren. Warum ist HTTP für diese Kommunikation besser als ASB? Die vermittelte Natur von ASB ermöglicht es, zwischen verschiedenen Netzwerken gut zu funktionieren. – janovesk

+0

Sie können dieses nugget-Paket https://www.nuget.org/packages/ServiceFabric.ServiceBus.Services/ innerhalb Ihrer SF-Dienste verwenden, um brokeredMessages zu erhalten. – LoekD

1

Wenn Sie aus Sicherheits-/Infrastrukturgründen durch HTTP (S) tunneln möchten, sollten Sie sich die Gateway-Komponente von NServiceBus ansehen. Is wurde speziell für diese Multi-Site-Szenarien erstellt. Es gibt Ihnen genau eine Nachrichtenübermittlung über eine unzuverlässige HTTP (S) -Verbindung. Check it out: https://docs.particular.net/nservicebus/gateway/

  1. einen NServiceBus Endpunkt mit MSMQ auf dem Feld mit den Windows-Server einrichten. Es verwendet die integrierten Speicher- und Weiterleitungsfunktionen von MSMQ, um Nachrichten lokal auf diesem Computer nicht zu verlieren.

  2. Richten Sie einen oder mehrere NServiceBus-Endpunkte in Azure Service Fabric ein. Dort würden Sie wahrscheinlich ASB als Transport für Service-Kommunikation verwenden.

  3. Verwenden Sie das NServiceBus-Gateway, um zwischen 1) und 2) über einen HTTP (s) -Kanal zu brücken. Es führt automatische Wiederholungen aus, wenn die Verbindung unterbrochen ist, und führt eine Deduplizierung durch, um Ihnen eine genau einmalige Nachrichtenzustellung über HTTP (s) zu ermöglichen.