Oracle Advanced Queuing mit .Net

7

Jemand kann Oracle Advance Queue aus C # mithilfe von PL / SSQL und ODP.NET implementieren? Ich kann kein einziges Beispiel oder eine Ressource mit konkreten Beispielen in C # oder VB.NET finden. Idealerweise hätte ich gerne einige Beispiele, wie Nachrichten mit einfachen Typen (XMl / string) in die Warteschlange gestellt und aus der Warteschlange entfernt werden.

    
Geo 12.08.2009, 12:02
quelle

5 Antworten

14

Ich kann Ihnen bei den Best Practices nicht helfen, aber ich kann Ihnen mit einer UDT-Warteschlange helfen. Bevor Sie mit der Warteschlange arbeiten, müssen Sie benutzerdefinierte Typen aus der Datenbank in Ihrem C # -Projekt generieren. Angenommen, Sie haben Visual Studio und ODP.NET installiert, müssen Sie einfach über den Server-Explorer eine Verbindung zur Datenbank herstellen, Ihre UDTs suchen, mit der rechten Maustaste klicken und "Benutzerdefinierte Klasse generieren" auswählen. Diese Klassen werden direkt Ihren UDTs zugeordnet und verwendet um die ausgedruckten Informationen zu speichern.

Hier ist ein Beispiel für den Code, den Sie zum Einreihen einer Nachricht verwenden würden:

%Vor%

Es ist ein ähnlicher Prozess wie aus der Warteschlange:

%Vor%

Das ist ein "einfaches" Beispiel. Ich habe das meiste aus Pro ODP.NET für Oracle Database 11g von Ed Zehoo rausgeholt. Es ist ein ausgezeichnetes Buch und ich empfehle es dringend, um Ihnen zu helfen, ein besseres Verständnis für alle Aspekte von OPD.NET zu bekommen. Sie können das eBook hier kaufen: Ссылка . Wenn Sie den Gutscheincode MACWORLDOC eingeben, können Sie das eBook für 21,00 $ erhalten. Dieses Angebot ist nur gut für das eBook, das in einem passwortgeschützten PDF-Format kommt. Ich hoffe, das hilft!

    
Michael 07.07.2010, 15:27
quelle
3

Ich kenne die genaue Antwort auf dieses Problem nicht, aber hier ist was wir getan haben:

  • Zuerst muss jede .net-Anwendung, die auf dem ESB zuhören muss (ESB basiert auf AQ), ihre eigene lokale Oracle-DB verwenden und Nachrichten von dort aus der Warteschlange nehmen. Die Nachrichten werden an die lokalen Warteschlangen weitergegeben. Dies löst das potenzielle Skalierbarkeitsproblem, das damit verbunden ist, dass eine DB-Verbindung geöffnet bleibt, um Nachrichten zu empfangen.
  • Zweitens haben wir unsere eigene AQ-Bibliothek erstellt, die gespeicherte Prozeduren grundlegend kapselt. - Dies wird nicht mehr benötigt, da Oracle das ODAC 11.1.0.7.20 (mit einem ODP.NET, das AQ unterstützt). Wir verwenden Oracle-Typen als eine Art DTO, um die Nachrichtenverträge zu definieren.
Geo 24.09.2009 15:43
quelle
3

Hier ist ein schönes Beispiel, das ich von Oracle gefunden habe.

Ссылка

Code: Ссылка

    
jbrook10 06.06.2011 20:19
quelle
1

Ich hatte eine Anforderung, bei der ich UDT-Nachrichten in eine Warteschlange einreihen / aus der Warteschlange entfernen musste. Dieser Beitrag war wirklich hilfreich. Es hat fast alles außer der Erstellung eines "Oracle Custom Type" fehlt. Ich dachte, es lohnt sich, diesen Code hier hinzuzufügen, damit die Lösung vollständig ist.

Zu EnQueue / DeQueue in Oracle:

Benutzer mit der Rolle "AQ_ADMINISTRATOR_ROLE" muss erstellt werden. Im folgenden Beispiel wird der "AQUSER" mit dieser Rolle erstellt.

%Vor%     
Vishal A 31.05.2012 06:11
quelle
0

AQ hat plsql Schnittstelle über DBMS_AQ [adm]. Alles, was Sie brauchen, ist, dass Sie diese Pakete von Ihrer Umgebung und allgemeinen AQ-Beispielen und Setup ausführen. Ich denke nicht, dass es etwas besonderes gibt, wenn man diese Pakete von c # aufruft.

    
Michal Pravda 13.08.2009 11:40
quelle

Tags und Links