Frage

Ich habe Setup Dinge in einer ziemlich ähnlich wie die Blog-Posts darüber, aber ich bin immer einen Fehler, wenn bei etwa einer der Warteschlangen starten.

Die msmq://localhost/colin_console_queue nicht automatisch durch mein Programm erstellt wird, erhalten.

Ich bin ziemlich sicher, dass ich einfach nicht etwas richtig machen, aber ich weiß nicht, was ich ausgelassen habe.

Ich habe ein ‚DisableAutoQueueCreation‘ -Attribut entdecken, und ich versuchte, es zu falsch auf die verschiedenen Konfigurationselemente Einstellung und ich entdeckte es sogar als eine Eigenschaft auf der RhinoServiceBusFacility vorhanden war, so habe ich versucht, es dort zu setzen. Leider nichts davon schien zu funktionieren.

Wenn ich die beiden URLs auf die gleiche Queue Punkt ändert sich die App im Grunde funktioniert, aber ich bin mir ziemlich sicher, das ist nicht, was ich tun soll. Ich schaute auf der Starbucks Beispiel app, um zu sehen, was es tut, aber es scheint eine Menge Setup zu tun hart codierte Pfade im Code verwenden.

<facilities>
  <facility id="rhino.esb">
    <bus threadCount="1" numberOfRetries="5" endpoint="msmq://localhost/colin_console_queue_bus"
         logEndpoint="msmq://localhost/colin_console_queue_bus.log" />
    <messages>
      <add name="ConsoleApplication1" endpoint="msmq://localhost/colin_console_queue" />
    </messages>
  </facility>
</facilities>

Hier ist mein Testprogramm verwende ich, herauszufinden, wie die Queue zu verwenden.

    static void Main(string[] args)
    {
        var container = new WindsorContainer(new XmlInterpreter());
        container.Kernel.AddFacility("rhino.esb", new RhinoServiceBusFacility());
        if (args.Length > 0)
        {
            var bus = container.Resolve<IStartableServiceBus>();
            bus.Start();
            bus.Send(new EmailMessage { Message = args[0], To = "test" });
            bus.Dispose();
        }
        else
        {
            container.Register(AllTypes.FromAssembly(Assembly.GetExecutingAssembly()).BasedOn(typeof(IMessageConsumer)));
            var bus = container.Resolve<IStartableServiceBus>();
            bus.Start();
            Console.ReadLine();
            Console.WriteLine("Bus stopped");
            bus.Dispose();
        }
    }

Hier ist der Fehler, den ich bekommen,

Unhandled Exception: System.Transactions.TransactionException: Failed to send message to Uri: msmq://colin-pc/colin_console_queue ---> Rhino.ServiceBus.Exceptions.TransportException: The queue msmq://colin-pc/colin_console_queue does not exists
   at Rhino.ServiceBus.Msmq.OpenedQueue..ctor(QueueInfo info, MessageQueue queue, String url, Nullable`1 transactional) in D:\Work\rhino-esb\Rhino.ServiceBus\Msmq\OpenedQueue.cs:line 24
   at Rhino.ServiceBus.Msmq.QueueInfo.Open(QueueAccessMode access, IMessageFormatter formatter) in D:\Work\rhino-esb\Rhino.ServiceBus\Msmq\QueueInfo.cs:line 71
   at Rhino.ServiceBus.Msmq.QueueInfo.Open(QueueAccessMode access) in D:\Work\rhino-esb\Rhino.ServiceBus\Msmq\QueueInfo.cs:line 63
   at Rhino.ServiceBus.Msmq.MsmqTransport.SendMessageToQueue(Message message, Endpoint endpoint) in D:\Work\rhino-esb\Rhino.ServiceBus\Msmq\MsmqTransport.cs:line 303
War es hilfreich?

Lösung

Dank Ayende (per E-Mail) die Antwort auf sich herausstellt, weil die Warteschlange, die Sie (die in dem Bus-Tag genannt) zu hören ist die einzige, die Sie automatisch für die Erstellung verantwortlich sind.

Mein Beispiel-Programm ist ziemlich fehlerhaft, obwohl so umschrieb ich die Dinge vollständig und Verwendung der Einweg Warteschlange, um sicherzustellen, ich es richtig verstanden (und ich glaube, ich tun!). Ich werde vielleicht das Beispiel irgendwann setzen, weil ich sicherlich ein wenig Schwierigkeiten grokking es hatte alles.

Andere Tipps

Nun, im Allgemeinen eine Web-Anwendung nicht tun soll Verwaltungsvorschriften auf etwas wie ccentral an die Infrastruktur als Nachrichten Konfiguration einer Warteschlange-Servers Warteschlangen. Ja wirklich. Normal Verwaltungs guidleines -. Weshalb die Programmierer wahrscheinlich nicht someoen würde glaubten sogar, dass versuchen

Siehe, kann es mehr sein u pDie Warteschlange einstellen, als Sie denken.;) Wie es die Konfiguration

die Warteschlangen manuell einrichten.

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