AMQP, SQL Server und XA

8

Wir entwickeln eine Anwendung mit folgenden Eigenschaften:

  • eigenständige Feder 3.1.0.RELEASE Anwendung
  • JPA mit Hibernate 3.6.7.Final
  • AMQP (RabbitMQ als Server, Spring AMQP als Client)
  • SQL Server 2008 mit jTDS-Treiber

Wir müssen Transaktionen zwischen RabbitMQ und SQL Server synchronisieren, also versuchen wir, XA mit Atomikos einzurichten. Das Problem ist, dass wir keine einzige Spring-Beispielkonfigurationsdatei für diese Situation finden können, die tatsächlich funktioniert. Wir haben so viele Kombinationen mit Samples aus Spring-Dokumentation, Google, Foren usw. ausprobiert. Etwas fehlt immer.

Könnte uns bitte jemand eine solche Datei zur Verfügung stellen, damit wir sie als Vorlage für unsere Konfiguration verwenden können.

P.S. Brauchen wir wirklich XA?

Danke.

    
Ivan Bosnic 03.04.2012, 01:25
quelle

2 Antworten

1

Nach dem Durchsuchen der verschiedenen Kandidatenlösungen (Verwendung von Datenerfassung ändern , Adapter für < a href="http://msdn.microsoft.com/en-us/library/ms345108%28v=sql.90%29.aspx"> SQL Server Service Broker und mögliche Konvertierungen von MSMQ zu RabbitMQ), kam ich zu einer Lösung, die für Sie arbeiten sollte.

Es stellt sich heraus, dass Sie WCF Clients und Serviceverträge an SQL Server binden können. Von hier aus können Sie RabbitMQs AMQP-Bindung für WCF , um Nachrichten vor und zurück zu übersetzen, wie die oben verlinkten PDF-Dokumente sehr detailliert.

Ich bin unklar, ob ein zusätzlicher Transaktionsmanager wie XA hier erforderlich sein wird, aber wenn Sie Probleme mit Transaktionsduplikation, Schleifen und Mismessen haben, lohnt es sich, als Vermittler für die Verbindung zu untersuchen. Wenn Sie diese Route verwenden, müssen Sie diese auf dieselbe Weise in Ihr Gateway einbinden, wie Sie es in der Problembeschreibung definiert haben. Wenn dies geklärt werden muss, würde ich mich hierauf freuen.

Viel Glück mit Ihrer Bewerbung. Es klingt wie eine Integration Hydra von außen, aber sobald Sie alles zusammen sprechen, sollte es gut funktionieren.

    
MrGomez 14.04.2012 22:07
quelle
0

Wie ich weiß, unterstützt RabbitMQ nicht Transaktionen im XA-Stil.

Und ja, Sie können es in Java tun:

Testkonfiguration.java

%Vor%

Einfaches Beispiel für send:

%Vor%

.. und erhalten:

%Vor%
Voislav Sauca 15.04.2012 18:05
quelle

Tags und Links