BizTalk übernimmt in dieser Konstellation die Kommunikation mit On-Prem Systemen und ist im Internet nicht sichtbar. Wo hingegen Azure die komplette Kommunikation, die über das Internet realisiert ist, übernimmt. Ziel ist es, nur eine ausgehende Internetverbindung von dem On-Prem System (BizTalk) freizugeben. Dazu nutzen wir Azure Storage Services. Diese haben keine Wartungszeiten, weshalb kein Fallback Szenario benötigt wird. Ebenfalls werden die Nachrichten hier gepuffert, bis der BizTalk Server diese abholt.
Der Ablauf sieht also wie folgt aus:
- Empfangen der Nachrichten von externen Systemen in Azure
- Pullen der Nachrichten von Azure Storage Services im BizTalk
Pullen der Nachrichten von Azure im BizTalk
Folgende 3 Ansätze haben sich bei uns über die Zeit durchgesetzt:
- Synchronisieren als Topic Event
- Synchronisieren als Azure Blob
- Synchronisieren als Event mit zugehörigem Blob
Welcher dieser Ansätze gewählt wird, hängt von den Anforderungen ab.
Synchronisieren als Topic Event
Dieser Ansatz kann gewählt werden, wenn kleine Nachrichten ohne zusätzliche Steuerungsdaten* synchronisiert werden sollen.
Erforderliche Ressourcen:
- Azure Service Bus Namespace mit Topic und Subscription
- BizTalk Service Bus Adapter
Einschränkungen:
- Maximale Nachrichtengröße Azure Service Bus
- 256 KB für Price Tier Standard | 1 MB für Price Tier Premium
- Für mehr Informationen, siehe: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-quotas
Ablauf:
Bei diesem Ablauf wird der Inhalt der empfangenen Nachricht als Inhalt der erstellten Service-Bus-Nachricht spezifiziert.
Synchronisieren als Azure Storage Blob
Dieser Ansatz kann gewählt werden, wenn große Nachrichten ohne zusätzliche Steuerungsdaten* synchronisiert werden sollen.
Erforderliche Ressourcen:
- Azure Storage Account mit spezifiziertem Blob Container
- BizTalk Azure Blob Storage Adapter
Ablauf:
Bei diesem Ablauf wird der Inhalt der empfangenen Nachricht als Inhalt des erstellten Blobs spezifiziert.
Synchronisieren als Topic Event mit zugehörigem Blob
Dieser Ansatz kann gewählt werden, wenn Nachrichteninhalte mit zusätzlichen Steuerungsdaten* synchronisiert werden sollen.
Erforderliche Ressourcen:
- Azure Storage Account mit spezifiziertem Blob Container
- Azure Service Bus Namespace mit Topic und Subscription
- BizTalk Service Bus Adapter
- Schema der Steuerungsdaten*
- BizTalk Custom Pipeline
- Die Pipeline muss den Blobpfad aus dem Steuerungsdatensatz extrahieren, den Blob herunterladen und als Nachrichteninhalt setzen. Hier können zusätzliche Properties promoted werden
Natürlich muss eine Nachricht in diesem Schema (Steuerungsdatenschema) an den Service Bus gegeben werden.
Einschränkungen:
- Maximale Nachrichtengröße Azure Service Bus
- 256 KB für Price Tier Standard | 1 MB für Price Tier Premium
- Für mehr Informationen, siehe: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-quotas
Ablauf:
Bei diesem Ablauf wird der Inhalt der empfangenen Nachricht als Inhalt des erstellten Blobs spezifiziert. Danach wird der Pfad des erstellten Blobs und die zusätzlichen Steuerungsdaten* in der Struktur des erstellten Schemas als Inhalt der Service Bus spezifiziert.
*Steuerungsdaten sind hier Informationen, welche zur/während der Verarbeitung der Nachricht benötigt werden.