El procesamiento por microlotes es una técnica donde se incluye más de un registro en una sola solicitud de servicio. Si se incluyen varios registros en una solicitud, en lugar de enviar solicitudes individuales para cada registro, se podrá mejorar considerablemente el rendimiento cuando se procesan grandes cantidades de registros a través de un servicio. Spectrum Technology Platform admite el procesamiento de microlotes para servicios web REST y SOAP.
Extremo de microlote
Para AMER, utilice amer-microbatch.precisely.com. Tiene un tiempo de espera de 5 minutos, lo que permite utilizar tamaños de microlotes más grandes.Tamaño de los microlotes
En el caso de AMER y EMEA, en el que se utiliza el punto de conexión especial de microlotes, puede colocar tantos registros como quepan dentro de un tiempo de espera de 5 minutos. Incluso si se agota el tiempo de espera, se le cobrará por cada registro en la solicitud, por lo que se recomienda elegir la cantidad de registros que se puedan procesar en 4 minutos en caso de que el procesamiento tome más tiempo.
En el caso de APAC, en el que se usa el punto de conexión estándar, la cantidad máxima de registros que se permite en una solicitud depende de la categoría del servicio.
Categoría del servicio | Entidades máximas de entrada |
---|---|
Direccionamiento | 25 |
Análisis | 10 |
Calidad de Datos | 10 |
Geocodificación | 25 |
Consumer Insight | 10 |
PSAP | 25 |
Enrutamiento | 1 |
Spatial | 1 |
Jurisdicción fiscal | 25 |
Telecomunicaciones | 1 |
Cada invocación de microlote debe ser síncrona (1 a la vez). Envíe la solicitud y espere la respuesta antes de enviar otra solicitud. Las invocaciones asincrónicas de microlotes pueden desbordar Spectrum Technology Platform, lo que puede generar una disminución del rendimiento para otros clientes. Si utiliza invocaciones o microlotes asíncronos que son demasiado grandes, es posible que su cuenta se desactive para garantizar que el uso de Spectrum Technology Platform por parte de otros clientes no se vea afectado.
Uso de una ID de registro
Resulta útil asignar una ID a cada registro de un microlote, a fin de poder relacionar los registros de la solicitud con aquellos de la respuesta. Puede usar los campos de usuario para esto. Para obtener información sobre los campos de usuario, consulte Interfaz REST. Para obtener información sobre los campos de usuario, consulte La interfaz SOAP.
Procesamiento por microlotes en REST
Para procesar microlotes mediante el servicio web REST, incluya dos o más registros en archivo XML o JSON en el cuerpo de la solicitud y envíela utilizando el método POST. Para obtener más información sobre el envío de una solicitud POST a un servicio web de Spectrum Technology Platform, consulte Solicitud JSON POST y Solicitud XML POST.
Por ejemplo, en esta solicitud se incluyen dos registros en archivo XML en el cuerpo de la solicitud:
POST https://spectrum.precisely.com/rest/ValidateAddressPOST/results.xml HTTP/1.1 Accept-Encoding: gzip,deflate Content-Type: application/xml Authorization: Basic YWRtaW46YWRtaW4= Content-Length: 533 Host: spectrum.precisely.com Connection: Keep-Alive User-Agent: Apache-HttpClient/4.1.1 (java 1.5) <ValidateAddressPOSTRequest xmlns:svc="http://www.pb.com/spectrum/services/ValidateAddressPOST"> <svc:Input> <svc:Row> <svc:AddressLine1>3001 Summer</svc:AddressLine1> <svc:City>Stamford</svc:City> <svc:StateProvince>CT</svc:StateProvince> </svc:Row> <svc:Row> <svc:AddressLine1>33 west monroe</svc:AddressLine1> <svc:City>Chicago</svc:City> <svc:StateProvince>IL</svc:StateProvince> </svc:Row> </svc:Input> </ValidateAddressPOSTRequest>
Procesamiento por microlotes en SOAP
Para procesar microlotes en un servicio web SOAP, debe incluir dos o más registros en la solicitud SOAP. Por ejemplo, en esta solicitud se incluyen dos registros:
POST http://spectrum.example.com:8080/soap/ValidateAddress HTTP/1.1 Accept-Encoding: gzip,deflate Content-Type: text/xml;charset=UTF-8 SOAPAction: "" Authorization: Basic YWRtaW46YWRtaW4= Content-Length: 782 Host: config813vm0:8080 Connection: Keep-Alive User-Agent: Apache-HttpClient/4.1.1 (java 1.5) <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:val="http://www.pb.com/spectrum/services/ValidateAddress"> <soapenv:Header/> <soapenv:Body> <val:ValidateAddressRequest> <val:input_port> <val:Address> <val:AddressLine1>1 N. State St.</val:AddressLine1> <val:City>Chicago</val:City> <val:StateProvince>IL</val:StateProvince> </val:Address> <val:Address> <val:AddressLine1>3001 summer</val:AddressLine1> <val:City>stamford</val:City> <val:StateProvince>ct</val:StateProvince> </val:Address> </val:input_port> </val:ValidateAddressRequest> </soapenv:Body> </soapenv:Envelope>
Procesamiento por microlotes en la API del cliente
Para procesar microlotes en una solicitud API de servicio, se deben enviar varias filas de datos en la solicitud. Por ejemplo, en esta clase .NET se envían dos filas en la solicitud:
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(); } } }