Dynamisch erstellen asynchrone message queues in Java
Muss ich erstellen, asynchrone message queues dynamisch in Java. Mein use-case ist das versenden von E-Mails über mehrere SMTP-Server: ich brauche, um zu erzwingen, dass E-Mails an den gleichen SMTP-server sind Prozesse, die sequentiell, aber E-Mails an andere SMTP-Server können gleichzeitig verarbeitet werden. Ich habe JMS in der Vergangenheit, aber soweit ich es sehen kann, erlaubt nur die compile-time Schöpfung, in der Erwägung, dass brauche ich zum erstellen von queues zur Laufzeit (eine queue für jeden SMTP-server).
Bin ich etwas fehlt in Bezug auf JMS oder gibt es ein anderes tool/Vorschlag was ich noch schauen?
- Verwenden Sie JMS-spezifisch oder ist das etwas, das Sie verwenden können, java.util.Auger und seine ExecutorServices zu tun?
- Ich bin nicht mit JMS-spezifisch, so dass ich werde haben Sie einen Blick auf die ExecutorServices, danke.
InformationsquelleAutor Zecrates | 2009-10-29
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich Stimme mit Adam, der use-case klingt wie JMS ist overhead. Java-built-in-Funktionalität ausreichend:
JMS selbst als Skillung ist eher leise auf die Frage. Die meisten Implementierungen erlauben Sie, dies zu tun, nur nicht durch JMS selbst, sondern mit Ihren eigenen API. Aber Sie werden nicht in der Lage, um hook up etwas formal wie ein MDB an eine dynamische Warteschlange. Sondern Sie müssen, um Ihre eigenen verbindungen und die Zuhörer.
Als wir das Letzte mal sah diese in einer WebSphere-Umgebung war es überraschend schwierig/unmöglich zu erstellen Warteschlangen dynamisch (temporären Warteschlangen sind zu kurzlebig für Sie glaube ich). Obwohl die APIs für die Erstellung von Warteschlangen gab, die Sie benötigten einen server neu starten, danach aktiv zu werden. Dann gibt es die MDB Ausgabe allused zu.
Wie über eine schmutzige arbeiten, um basierend auf dem Sprichwort, dass alle Probleme können gelöst werden, indem eine zusätzliche Ebene der Dereferenzierung, die davon ausgeht, dass die Menge der verfügbaren Drucker ist vergleichsweise klein.
Warteschlangen erstellen Printer01 zu Printer99 (oder kleinere Zahl). Eine "Datenbank", welche Karten Warteschlangen in realen Drucker. Als Anforderungen für die Drucker kommen zusammen, die Sie hinzufügen können, um die mapping-Tabelle. Haben Sie vielleicht ein paar overhead von MEB suchen in Warteschlangen, die niemals verwendet werden, aber es sei denn, Ihr pootential Anzahl von Druckern ist riesig, vielleicht können Sie es sich leisten?
Erstellen Sie eine Warteschlange für jeden der SMTP-sever-und limit-Warteschlange Verbraucher(MDB oder ein message listener) zu 1
Habe ich das mit activemq - ich habe tatsächlich geschrieben, eine Frage auf zu der Zeit, als ich hatte ähnliche Bedenken (die JMS-Dokumentation in der Zeit festgestellt, dass dieser nicht unterstützt wurde) und sicher war, dass er unterstützt wurde.