Configuración de Pub/Sub

Para configurar el formato de publicación de Pub/Sub del transcodificador de Mainframe Connector, añade la configuración necesaria en un archivo JSON y especifica este archivo con la opción --input-parameter pubsub-publish-configuration=DataPath del comando qsam decode. Debe definir la configuración de publicación de Pub/Sub tal como se especifica en la sección PubsubConfiguration.

En esta página se describen los distintos parámetros de Pub/Sub que puede configurar como parámetros de entrada para la transcodificación. El objeto PubsubPublishConfiguration contiene todas las opciones de configuración del decodificador de Pub/Sub.

PubsubPublishConfiguration

El objeto PubsubPublishConfiguration te permite configurar los mensajes que se envían a Pub/Sub y se usa con el comando qsam decode.

Representación JSON
{
    "attributes_configuration": object (AttributesConfiguration),
    "ordering_key_configuration": object (OrderingKeyConfiguration),
    "spillover_configuration": object (SpilloverConfiguration),
    "batching_settings": object (BatchingSettings),
    "flow_control_settings": object (FlowControlSettings),
    "concurrency_control_settings": object (ConcurrencyControlSettings)
}
Campos
attributes_configuration

object (AttributesConfiguration)

Especifica la configuración de los atributos. Puede especificar la configuración como pares clave-valor que se pueden adjuntar a un mensaje de Pub/Sub. La configuración se puede usar para filtrar mensajes o para transmitir metadatos adicionales.

ordering_key_configuration

object (OrderingKeyConfiguration)

Especifica la configuración de la clave de ordenación. Esta configuración verifica que los mensajes con la misma clave de ordenación se entreguen en orden. Si no define esta configuración, no se garantiza el orden de los mensajes.

spillover_configuration

object (SpilloverConfiguration)

Especifica la configuración de cómo se envían los mensajes de desbordamiento. Si no se define, los mensajes de desbordamiento se envían al tema de entrada con el sufijo _spillover.
Por ejemplo, si el tema de entrada es projects/project_example/topics/topic_example, el tema de desbordamiento predeterminado sería projects/project_example/topics/topic_example_spillover.

batching_settings

object (BatchingSettings)

Especifica la configuración de lote para publicar mensajes. De forma predeterminada, el procesamiento por lotes está inhabilitado. Para obtener más información, consulta Publicar con ajustes por lotes.

flow_control_settings

object (FlowControlSettings)

Especifica la configuración de control del flujo que se usará para publicar mensajes. De forma predeterminada, los ajustes de control de flujo están inhabilitados. Para obtener más información, consulta Publicar mensajes con la configuración de control del flujo.

concurrency_control_settings

object (ConcurrencyControlSettings)

Especifica la simultaneidad y la configuración de procesamiento de mensajes del cliente editor. Estos ajustes controlan el paralelismo de la publicación de mensajes, la confirmación de las entregas correctas y la gestión de los errores que se produzcan durante el proceso de publicación. Para obtener más información, consulta Control de simultaneidad.

AttributesConfiguration

El mensaje AttributesConfiguration especifica un conjunto fijo de atributos que definen cómo se obtienen los atributos de los mensajes de Pub/Sub.

Representación JSON
{
    "attributes": object (Attributes)
}
Campos
attributes

object (Attributes)

Conjunto de atributos de clave-valor fijos que se adjuntarán a los mensajes de Pub/Sub.

OrderingKeyConfiguration

El mensaje OrderingKeyConfiguration especifica una cadena estática como clave de ordenación que define cómo se determina la clave de ordenación de los mensajes de Pub/Sub.

Representación JSON
{
    "key": string
}
Campos
key

string

El valor de cadena que se usará como clave de ordenación del mensaje de Pub/Sub.

SpilloverConfiguration

El mensaje SpilloverConfiguration define cómo especificar un tema alternativo para los mensajes de desbordamiento. Puede especificar el nombre completo del tema o un sufijo que se añadirá al nombre del tema de entrada. Estas dos opciones se excluyen mutuamente, por lo que debes elegir una.

Representación JSON
{
    "name": string,
    "suffix": string
}
Campos
name

string

Especifica el nombre completo del recurso de un tema alternativo para los mensajes de desbordamiento con el formato projects/{project}/topics/{topic}.

suffix

string

Especifica un sufijo que se añadirá al nombre del tema de entrada para los mensajes de desbordamiento. Por ejemplo, si el tema de entrada es projects/project_example/topics/my-topic y el sufijo es _errors, el tema de desbordamiento sería projects/project_example/topics/my-topic_errors.

BatchingSettings

El mensaje BatchingSettings te permite especificar la configuración de los lotes para publicar mensajes en Pub/Sub. Debes verificar que la configuración de los lotes respete las cuotas y los límites de Pub/Sub definidos. Para inhabilitar el procesamiento por lotes, define message_count_threshold=1.

Representación JSON
{
    "delay_threshold": string,
    "element_count_threshold": long,
    "request_byte_threshold": long
}
Campos
delay_threshold

string

Especifica el umbral de retraso que se va a usar para el procesamiento por lotes. Una vez transcurrido el tiempo definido por delay_threshold (contado a partir del primer mensaje añadido), los mensajes se agrupan en un lote y se envían. Te recomendamos que no definas un valor demasiado alto, ya que, de lo contrario, es posible que las llamadas parezcan no completarse nunca. Si priorizas el procesamiento en tiempo real o casi en tiempo real, te convendrá usar un umbral de retraso más bajo (unas decenas o cientos de milisegundos). De esta forma, se verifica que los mensajes se envían rápidamente. Si se trata de un procesamiento por lotes a gran escala en el que la entrega inmediata no es fundamental, puede ser aceptable un umbral más alto (unos segundos) para permitir lotes más grandes y eficientes. Para obtener más información sobre el formato de duración, consulta Duration. Si se proporciona un umbral de latencia de 0 segundos, se considera que no se ha proporcionado ningún umbral de latencia y se usa el valor predeterminado. El valor predeterminado es 1 ms.

element_count_threshold

long

Especifica el umbral de recuento de mensajes que se debe usar para el procesamiento por lotes. Cuando se acumula el número de mensajes definido por message_count_threshold, se agrupan en un lote y se envían, aunque aún no haya transcurrido el umbral de retraso. Si tus mensajes son pequeños de forma constante, te recomendamos que aumentes el umbral del recuento de mensajes. El valor predeterminado es 1.

request_byte_threshold

long

Especifica el tamaño máximo en bytes de los mensajes que se acumularán antes de enviar un lote a Pub/Sub. Esto se aplica aunque aún no se hayan superado los umbrales de retraso o de recuento de mensajes. Si tus mensajes son pequeños de forma constante, te recomendamos que aumentes el umbral de bytes. El valor predeterminado es 1 byte.

FlowControlSettings

El mensaje FlowControlSettings te permite especificar cómo gestiona el cliente editor el flujo de mensajes a Pub/Sub. Estos ajustes impiden que el cliente consuma demasiados recursos o que sobrecargue Pub/Sub.

Representación JSON
{
    "limit_exceeded_behavior": enum (LimitExceededBehavior),
    "max_outstanding_element_count": long,
    "max_outstanding_request_bytes": long
}
Campos
limit_exceeded_behavior

enum (LimitExceededBehavior)

Especifica el comportamiento cuando se superan los límites de control de flujo. El valor predeterminado es BLOCK.

max_outstanding_element_count

long

Especifica el número máximo de mensajes que pueden estar pendientes (enviados, pero aún no confirmados por Pub/Sub). Si tu mainframe tiene mucha memoria y quieres conseguir un rendimiento muy alto, puedes probar a aumentar el recuento.

max_outstanding_request_bytes

long

Especifica el tamaño total máximo en bytes de los mensajes pendientes.

ConcurrencyControlSettings

El mensaje ConcurrencyControlSettings te permite configurar el paralelismo de la publicación de mensajes. Estos ajustes influyen en el número de mensajes que se pueden enviar simultáneamente.

Representación JSON
{
    "publishing_threads": int,
    "result_processing_threads": int
}
Campos
publishing_threads

int

Especifica el número de hilos de procesamiento para publicar mensajes. El valor debe ser igual o inferior al número de núcleos disponibles. Si el número de subprocesos es 0, la publicación se gestiona de forma síncrona.

result_processing_threads

int

Especifica el número de hilos para procesar los resultados de los mensajes de Pub/Sub. Esto incluye confirmar que los mensajes se han enviado correctamente y gestionar los errores que se produzcan durante la publicación. El valor 0 significa que el paralelismo del procesamiento de resultados se gestiona de forma síncrona. El valor predeterminado es 1.

Atributos

El mensaje Attributes especifica una colección de pares clave-valor Attribute que definen cómo se determinan los atributos.

Representación JSON
{
    "attribute": object (Attribute)
}
Campos
attribute

object (Attribute)

Especifica una colección de pares clave-valor.

Atributo

El mensaje Attribute representa un único par clave-valor que se usa como atributo de mensaje de Pub/Sub.

Representación JSON
{
    "key": string,
    "value": string
}
Campos
key

string

Especifica la clave del atributo.

value

string

Especifique el valor del atributo.

LimitExceededBehavior

La enumeración LimitExceededBehavior te permite configurar el comportamiento cuando se superan los límites de control de flujo.

Enumeraciones
BLOCK El editor de Pub/Sub se bloqueará cuando se superen los límites. De esta forma, no se publicarán más mensajes hasta que haya recursos disponibles.
IGNORE El editor de Pub/Sub ignorará los límites y seguirá publicando cuando se superen. Esto puede provocar un aumento del consumo de recursos.
THROW_EXCEPTION El editor de Pub/Sub generará una excepción cuando se superen los límites, lo que indica que no se ha podido publicar.