Suche

über alle News und Events

 

Alle News

 

Sebastian Meyer, Microsoft & SAP...

Read more

Für Entwickler, Architekten, Projektleiter und...

Read more

In der Welt der Softwareentwicklung ist die...

Read more

QUIBIQ spendet für den guten Zweck – und für...

Read more

Eine bestimmte Antwort auf einen HTTP Request zu...

Read more

In einer Welt, die von stetigem Wandel geprägt...

Read more

In einem unserer Kundenprojekte, war das Ziel eine...

Read more

QUIBIQ Hamburg wird mit dem Hamburger...

Read more

Zwei Tage lang wurde vom 14.-15.11 wieder das...

Read more

Was ist ein Excel-Plugin – und wann ist es...

Read more

How-to: Send Big Data from Orchestration to Blob

Bei Datenübertragungen stossen wir teilweise an Grenzen, wie beispielsweise die Grösse einer Datendatei. Gerade bei hybriden Schnittstellenlösungen können solche Hindernisse entscheidend sein. Beim folgenden Beispiel gehen wir von einer Schnittstelle aus, die grosse Daten über BizTalk und Azure versendet. Hier treffen wir auf ein solches Problem bei der Übertragung. Wir behandeln dabei nicht alle Bereiche, die im Abschnitt «Ablauf» beschrieben sind, sondern gehen nur auf die komplexen Problematiken ein.

Problematik

Die Erweiterung des Datatransfer-Frameworks "BigData" wurde erstellt, weil bei grösseren Dateien die LogicApps auf Limitierungen gestossen sind. Konkret konnte der HTTP-Trigger der LogicApp keine Requests entgegennehmen, die grösser waren als 105 MB.

Limits and configuration reference guide - Azure Logic Apps | Microsoft Docs
 

Lösungsansatz

Um diese Limitierung zu umgehen, wurde eine Logic App (Standard) erstellt, da dort die Limitierungen manuell angepasst werden können. Leider funktionierte aber auch diese Lösung nicht, da wir auf einen Bug gestossen sind. Die Anpassung an den Limitierungen ist grundsätzlich möglich, jedoch nicht für den HTTP-Trigger: LogicApp Standard - 413 Request entity too large - Microsoft Q&A

Die bestehende Lösung schickt nun direkt aus der Orchestration über einen Helper in den Storage Account. In der LogicApp Consumption wurde der Trigger dementsprechend auf einen BlobStorage-Trigger angepasst, welcher erst bei 1 GB eine Limitierung aufweist.

Falls die Limitierung von 1 GB künftig nicht ausreichen sollte, müsste auf eine LogicApp Standard umgestellt und dort die Limitierung des Triggers hochgestuft werden.

 

Ablauf

BizTalk Helper Klasse

TLS

Am Anfang der Methode in der Helper-Klasse, wird das Sicherheitsprotokoll vom standardmässigen TLS1.0 auf TLS1.2 umgestellt, da man ansonsten in den StorageAccount-Properties auf TLS1.0 umstellen müsste.

System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

Dies kann auch in Azure konfiguriert werden:


Cloud Storage Account

Im nächsten Schritt wird in einer Helper-Klasse, anhand des Strings „sendPort“, der den ConncetionString beinhaltet, eine Verbindung zum StorageAccount aufgebaut und der Container "bigdata" ausgewählt. Anhand der Metadata-Property "message.FileName" wird ein Blob mit dem entsprechenden Namen erzeugt:

// Retrieve storage account from connection string.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(sendPort);

// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

// Retrieve reference to a previously created container.
CloudBlobContainer container = blobClient.GetContainerReference("bigdata");

// Retrieve reference to a blob by the given filename
CloudBlockBlob blockBlob = container.GetBlockBlobReference(message.FileName);
 

Anschliessend wird der FileContent als Byte-Array als BlobContent hochgeladen:

// Create or overwrite the blob with contents from the message
blockBlob.UploadFromByteArray(content, 0, content.Length);


Azure

KeyVault

Im KeyVault werden die neuen Secrets "AZURE-StorageAccountConnectionString" für die spätere Verwendung angelegt.




Trigger / LogicApp

"When a blob is added or modified in Azure Storage"

Der Trigger ist mit dem StorageAccount und dem Container bigdata verbunden. Es wird jede Minute geprüft, ob ein neuer Blob hinzugefügt wurde.

Die JSON-Response wird geparsed, um die Properties verwenden zu können.

Get blob Content

Anschliessend holen wir uns mit "Get blob Content" den FileContent. Dieser kann dann verarbeitet und zum Schluss an ein Zielsystem geschickt werden.

 

Fazit

Es gibt viele Wege, grosse Datenmengen zu übertragen. Die in diesem Artikel beschriebene Art ist nur eine Variante, die spezifisch für ein Übertragen mit BizTalk und Azure verwendet werden kann. Jedoch stellen wir fest, dass auch in der Cloud immer wieder (Grössen-) Grenzen gesetzt werden und man sich gut überlegen sollte, welche Architektur man verwendet.

 

Das ist Beitrag von Alain Germann, QUIBIQ Schweiz AG 

Ihre Kontaktmöglichkeiten

Sie haben eine konkrete Frage an uns


 

Bleiben Sie immer auf dem Laufenden


 

Mit meinem "Ja" erkläre ich mich mit der Verarbeitung meiner Daten zur Zusendung von Informationen einverstanden. Ich weiß, dass ich diese Erklärung jederzeit durch einfache Mitteilung widerrufen kann. Bei einem Nein an dieser Stelle erhalte ich zukünftig keine Informationen mehr.

© QUIBIQ GmbH · Impressum · Datenschutz