2016-07-22 2 views
1

Wir verwenden Spring Integration Aggregator zum Aggregieren der Liste der Werbebuchungen für eine bestimmte Reihenfolge. Jetzt speichern wir die Nachrichteninformationen der Gruppe in db. Aber was wir festgestellt haben ist, dass es Art von Wert als group_key in Tabelle INT_MESSAGE_GROUP Tabelle verwendet. Ist es möglich, dies so anzupassen, dass die Auftrags-ID verwendet wird (immer einzigartig in unserem System), so dass wir das Aggregationsproblem im Produktions-Envt beheben können, indem wir eine Abfrage für die Datenbank anhand der Auftrags-ID ausführen.Verwendung des benutzerdefinierten Gruppenschlüssels in JdbcMessageStore im Spring-Integrationsaggregator

Ich habe bemerkt, dass intern der Korrelationsschlüssel als Gruppenschlüssel verwendet wird, aber nicht sicher, warum er unseren Korrelationsschlüssel nicht verwendet hat (die Bestell-ID), da wir unsere benutzerdefinierte Korrelationsstrategie in der Aggregatorkonfiguration konfiguriert haben.

Fyi verwenden wir Feder Integration 4.1.2

Antwort

1

da wir unsere eigene Correlation Strategie in Aggregator Konfiguration konfiguriert.

Die AggregatingMessageHandler hat eine Logik:

Object correlationKey = this.correlationStrategy.getCorrelationKey(message); 
... 
UUID groupIdUuid = UUIDConverter.getUUID(correlationKey); 

Also, wenn Ihr correlationStrategy richtig ist, haben Sie correlationKey als order id.

Obwohl ja, wird es immer noch als UUID in der DB sein.

Das ist, weil ein UUID ist genau CHAR(36) und voll kompatibel zwischen verschiedenen RDBMS-Anbietern.

Wir haben eine offene JIRA über die Angelegenheit, aber ich glaube nicht, dass es sinnvoll ist, DB mit benutzerdefinierten String-Schlüssel mit unterschiedlichen Längen zu blasen.

Betrachten Sie (oder schreiben) einige DB-Funktion, um ähnliche UUID basierend auf Ihrem Schlüssel order id für diese Problembehandlung Abfragen zu erstellen.

Oder ... nur einige Groovy-Skript für Ihre Kunden, um diese UUID Zeichenfolge mit java.util.UUID.nameUUIDFromBytes('myOrderId'.bytes).toString() von Java!

+0

Danke Artem für Ihre Eingabe. Ich denke, wir können mit dem leben, was von JdbcMessageStore für jetzt zur Verfügung gestellt wird. – user509755

Verwandte Themen