Frage

Ist es möglich zu konfigurieren eines Endpunkts zu handeln, wie ein Arbeiter abrufen von jobs aus einer Verteiler-UND abonnieren Sie eine Art von Nachrichten?

Ich habe das folgende Szenario ( angepasst zu sale-Terminologie)

*) eine zentrale Abteilung veröffentlicht jedes jetzt und dann eine Liste mit den neuen Preisen.Alle Arbeitnehmer haben, um benachrichtigt zu werden.Das bedeutet, ein Arbeitnehmer sollte sich dieser Veranstaltung.

*) wenn ein neuer Auftrag eintrifft, an das zentrale, sendet er es an den distributor, die senden, um das nächste idle worker verarbeitet werden.Das bedeutet, dass ein Arbeitnehmer müssen konfiguriert werden, um Nachrichten zu erhalten aus dem Verteiler.Ich verwende die folgende Konfiguration:

 <MsmqTransportConfig
    InputQueue="worker"
    ErrorQueue="error"
    NumberOfWorkerThreads="2"
    MaxRetries="5"
  />

  <UnicastBusConfig
    DistributorControlAddress="distributorControlBus"
    DistributorDataAddress="distributorDataBus" >    
    <MessageEndpointMappings>
      <add Messages="Events" Endpoint="messagebus" />
    </MessageEndpointMappings>
  </UnicastBusConfig>

Wenn ich es konfigurieren, nur als Arbeiter oder nur als Abonnent funktioniert alles wie erwartet, aber nicht, wenn ich es konfigurieren, wie beide.

Ich entdeckte, dass eine Meldung kommt in der Eingabe-Warteschlange der zentralen, die mit der Adresse des Vertriebspartners, als Absender-Adresse anstelle des Arbeiter-Adresse und die publisher erkennen, keine Teilnehmer in diesem Fall.Irgendwelche Ideen?Vielen Dank im Voraus.

War es hilfreich?

Lösung

Arbeiter sollen nicht IFAIK in dieser Weise verwendet werden. Ich denke, der Weg zu gehen wäre Ihr haben von zentraler Bedeutung für die Preise abonnieren und wenn ein „NewOrderMessage“ kommt, dass die Daten mit den geforderten Preisen bereichern (vielleicht nur Preise für die Produkte in dieser bestimmten Reihenfolge) und eine neue ProcessOrderRequest an den Eingang senden Warteschlange des Verteilers.

Eine andere Möglichkeit wäre, den Prozess zu haben, die die Bestellanfrage sendet die Preise in der Bestellanfrage aufzunehmen.

Macht das Sinn?

/ Andreas

Andere Tipps

Arbeiter hinter einem Verteiler ist, wie Sie die Skalierung einer einzelnen logischen Abonnenten, nicht wie behandeln Sie mehrere logische Abonnenten.Der Punkt ist, dass nur ein einziger Mitarbeiter aus dem pool der Arbeitnehmer sollte erhalten eine Nachricht, in dem Fall, Sie wollen, dass alle Beschäftigten gleich Aussehen des Verleger - das ist der Grund, warum die Adresse des Vertriebspartners, ist gegeben.

Wenn Sie mehrere logische Abonnenten, die Sie wollen zu skalieren, geben Sie jedem von Ihnen Ihre eigenen Verteiler.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top