Mikro-Batch-Verarbeitung

Bei der Mikro-Batch-Verarbeitung handelt es sich um eine Methode, bei der Sie mehr als einen Datensatz in eine einzelne Dienstanforderung aufnehmen können. Wenn Sie eine umfangreiche Sammlung an Datensätzen über einen Dienst verarbeiten, können Sie die Leistung bedeutend verbessern, indem Sie mehrere Datensätze in eine Anforderung aufnehmen, statt separate Anforderungen für jeden Datensatz auszustellen. Spectrum™ Technology Platform unterstützt die Mikro-Batch-Verarbeitung für REST- und SOAP-Webservices sowie für das Client-SDK.

Mikro-Batchgröße

Die Anzahl der in eine Anforderung aufzunehmenden Datensätze ist unbegrenzt. Im Allgemeinen erhalten Sie die beste Leistung, wenn Sie zwischen 50 und 100 Datensätze in einem Mikro-Batch senden. Wir empfehlen, Mikro-Batches unterschiedlicher Größen zu testen, um die optimale Mikro-Batchgröße für Ihre Umgebung zu ermitteln. Hinweis: In einigen Fällen erhalten Sie eventuell mehrere Datensätze in der Antwort für jeden Eingabedatensatz. Wenn Sie beispielsweise eine Adressenüberprüfung durchführen und 10 Adressen in den Mikro-Batch aufnehmen, wobei jede Adresse mit zwei möglichen überprüften Adressen übereinstimmt, würden Sie 20 Datensätze statt nur 10 in der Antwort erhalten.

Gehen Sie vorsichtig vor, wenn Sie Mikro-Batches und mehrere Threads für Anforderungen an Spectrum™ Technology Platform verwenden. Mehrere Threads überfordern das System eventuell, wenn die Mikro-Batchgröße jedes Threads zu groß ist.

Verwenden einer Datensatz-ID

Es ist eventuell hilfreich, jedem Datensatz in einem Mikro-Batch eine ID zuzuweisen, sodass Sie die Datensätze in der Anforderung mit den in der Antwort zurückgegebenen Datensätzen in Beziehung setzen können. Führen Sie dies anhand von Benutzerfeldern durch.

Mikro-Batch-Verarbeitung in der Client-API

Senden Sie mehrere Datenzeilen in der Anforderung, um die Mikro-Batch-Verarbeitung in einer API-Anforderung an einen Dienst durchzuführen. Beispiel: Bei der folgenden .NET-Klasse werden zwei Zeilen in der Anforderung gesendet:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Net;
using System.Text;
using ConsoleApplication1.ValidateAddress_Reference;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            var validateClient = new ValidateAddress {Credentials = new NetworkCredential("admin", "admin")};

            var address1 = new input_portAddress
            {
                AddressLine1 = "1825B Kramer Lane",
                AddressLine2 = "Suite 100",
                PostalCode = "78758",
                City = "Austin",
                StateProvince = "Texas"
            };

            var address2 = new input_portAddress
            {
                AddressLine1 = "100 Congress", 
                PostalCode = "78701", 
                City = "Austin", 
                StateProvince = "Texas"
            };

            var addresses = new input_portAddress[2];
            addresses[0] = address1;
            addresses[1] = address2;

            var options = new options {OutputCasing = OutputCasing.M};
            output_portAddress[] results = validateClient.CallValidateAddress(options, addresses);

            for (int i = 0; i < results.Length; i++)
            {
                System.Console.WriteLine("Record " + (i+1) + ":");
                System.Console.WriteLine("AddressLine1=" + results[i].AddressLine1);
                System.Console.WriteLine("City=" + results[i].City);
                System.Console.WriteLine("StateProvince=" + results[i].StateProvince);
                System.Console.WriteLine("PostalCode=" + results[i].PostalCode + "\n");
            }
            
            System.Console.Write("Press any key to continue...");
            System.Console.ReadKey();
        }
    }
}
Tipp: Trennen Sie die Verbindung zwischen Anforderungen nicht. Durch das Trennen und Herstellen einer Verbindung wird die Leistung eventuell reduziert.