Docs Menu
Docs Home
/ /

Nombre del tema

Los ejemplos de esta página muestran cómo configurar su conector de origen MongoDB Kafka para personalizar el nombre del tema en el que publica registros.

De forma predeterminada, el conector de origen de MongoDB Kafka publica datos de eventos de cambio en un tema de Kafka con el mismo nombre que el espacio de nombres de MongoDB desde el que se originaron los eventos de cambio. Un espacio de nombres es una cadena compuesta por el nombre de la base de datos y el nombre de la colección concatenados con un punto (.) personaje.

Las siguientes secciones muestran diferentes formas de personalizar los temas de Kafka en los que el conector publica datos de eventos de cambio:

  • Prefijo de tema

  • Sufijo de tema

  • Mapa del espacio de nombres del tema

Puede configurar su conector de origen para que anteponga una cadena al espacio de nombres de los datos del evento de cambio y publique registros en ese tema de Kafka. Esta configuración concatena automáticamente su prefijo con su espacio de nombres mediante el carácter "."

Para especificar el prefijo del tema, utilice la configuración topic.prefix como se muestra en el siguiente ejemplo:

topic.prefix=myPrefix
database=test
collection=data

Una vez configurado, su conector publica cualquier cambio en la colección data en la base de datos test en el tema de Kafka llamado myPrefix.test.data.

Se puede configurar el conector de origen para añadir un string al namespace de los datos del evento de cambio y publicar registros en ese tema de Kafka. Esta configuración concatena automáticamente el namespace con el sufijo utilizando el símbolo "." carácter.

Para especificar el sufijo del tema, utilice la configuración topic.suffix como se muestra en el siguiente ejemplo:

topic.suffix=mySuffix
database=test
collection=data

Una vez configurado, su conector publica cualquier cambio en la colección data en la base de datos test en el tema de Kafka llamado test.data.mySuffix.

Puede configurar su conector de origen para asignar valores de espacio de nombres a nombres de tema de Kafka para los datos de eventos de cambio entrantes. Los mapas de espacios de nombres de tema contienen pares compuestos por un patrón de espacio de nombres y una plantilla de nombre de tema de destino.

Las siguientes secciones describen cómo el conector interpreta los espacios de nombres y los asigna a temas de Kafka. Además de asignar directamente bases de datos y colecciones a temas de Kafka, el conector admite el uso de expresiones regulares y pares de comodines en los mapas de espacios de nombres de temas.

El orden de los pares en el mapa de espacios de nombres puede afectar la forma en que el conector escribe eventos en los temas. El conector relaciona los espacios de nombres en el siguiente orden:

  1. Se empareja con nombres de bases de datos y colecciones en el patrón de espacio de nombres. Para obtener más información sobre este patrón de espacio de nombres, consulte el ejemplo de nombres de bases de datos y colecciones.

  2. Se empareja con solo un nombre de base de datos en el patrón de espacio de nombres. Para obtener más información sobre este patrón de espacio de nombres, consulte el ejemplo de nombres de bases de datos y colecciones.

  3. Pares de expresiones regulares en orden. Para obtener más información sobre este patrón de espacio de nombres, consulte el ejemplo de expresiones regulares.

  4. El par de comodines. Para obtener más información sobre este patrón de espacio de nombres, consulte el ejemplo de comodín.

Puede especificar los nombres de bases de datos y colecciones específicas dentro de un mapa de espacio de nombres de temas para escribir eventos de cambio desde estas fuentes en temas de Kafka.

Si el nombre de la base de datos o el espacio de nombres del evento de cambio coincide con uno de los campos del mapa, el conector calcula el nombre del tema de destino según la plantilla de nombre de tema que corresponde a esa asignación y publica el evento en este tema.

Si el nombre de la base de datos o el espacio de nombres del evento de cambio no coincide con ninguna asignación, el conector publica el registro utilizando el esquema de nombres de tema predeterminado a menos que se especifique lo contrario mediante una configuración de nombres de tema diferente.

Importante

Dado que el carácter / indica que el espacio de nombres es un patrón de expresiones regulares, el conector genera un ConnectConfigException si el espacio de nombres incluye este carácter en un contexto que no es de expresiones regulares.

Cualquier asignación que incluya tanto la base de datos como la colección tiene prioridad sobre las asignaciones que solo especifican el nombre de la base de datos de origen.

Importante

La coincidencia del mapa de espacios de nombres se produce antes de que el conector aplique cualquier otra configuración de nomenclatura de tema. Si se definen, el conector aplica las configuraciones topic.prefix y topic.suffix al nombre del tema después de la asignación.

El siguiente ejemplo muestra cómo especificar la configuración topic.namespace.map para definir asignaciones de espacio de nombres de tema desde la base de datos carDb a la plantilla de nombre de tema automobiles y del espacio de nombres carDb.ev a la plantilla de nombre de tema electricVehicles:

topic.namespace.map={"carDb": "automobiles", "carDb.ev": "electricVehicles"}

Dado que la asignación de namespace carDb.ev tiene prioridad sobre la asignación carDb, el conector realiza las siguientes acciones:

  • Si el evento de cambio provino de la base de datos carDb y de la colección ev, el conector configura el destino en el tema electricVehicles.

  • Si el evento de cambio provino de la base de datos carDb y de una colección distinta a ev, el conector asigna el destino al tema automobiles.<collection name>.

  • Si el documento de cambio proviene de una base de datos distinta de carDb, el conector establece el tema de destino en el esquema de nombres de espacio de nombres predeterminado.

  • Si define las configuraciones topic.prefix y topic.suffix, el conector aplica sus valores al nombre del tema de destino después de realizar la asignación del espacio de nombres.

Puede usar una expresión regular (regex) dentro de un mapa de espacio de nombres de tema. Para usar una expresión regular, inicie el patrón de espacio de nombres con la barra diagonal (/). Cree la expresión regular siguiendo la sintaxis y el comportamiento especificados por la clase java.util.regex.Pattern.

El conector calcula el nombre del tema realizando una expansión de variables en la plantilla del nombre del tema. El conector admite las siguientes variables:

  • db:El nombre de la base de datos del espacio de nombres coincidente.

  • sepEl valor de la propiedad de configuración topic.separator. Para obtener más información sobre esta propiedad, consulte Propiedades del tema de Kafka para el conector de origen.

  • coll:El nombre de la colección del espacio de nombres coincidente, o una cadena vacía si no hay ningún nombre de colección.

  • sep_coll:El valor de la variable coll prefijado con el valor de la variable sep, o una cadena vacía si el valor de coll está vacío.

  • coll_sep:El valor de la variable coll con el sufijo del valor de la variable sep, o una cadena vacía si el valor de coll está vacío.

  • sep_coll_sep:El valor de la variable coll con prefijo y sufijo del valor de la variable sep, o una cadena vacía si el valor de coll está vacío.

Si utiliza alguna de las variables anteriores en su plantilla de nombre de tema, debe encerrarla entre llaves ({}) para que el conector la expanda. No puede usar llaves en la plantilla de nombre de tema para ningún otro propósito.

Nota

Personajes que escapan

Al crear un patrón de espacio de nombres, asegúrese de gestionar correctamente los caracteres que requieren escape. Por ejemplo, para que coincida con ., la sintaxis de expresiones regulares requiere que se escape como \.. Sin embargo, debe escapar la barra invertida \ como \\ según la sintaxis JSON. Por lo tanto, para que coincida con . en su patrón de espacio de nombres, debe escribirlo como \\..

Este ejemplo muestra cómo especificar la configuración topic.namespace.map para que el conector realice la siguiente asignación:

  • Escribe eventos de bases de datos que coinciden con una expresión regular de un tema calculado a partir de la plantilla de nombre de tema industrial{sep_coll}. El patrón de expresión regular coincide con cualquier espacio de nombres con el nombre de base de datos vertical.

  • Escribe eventos del espacio de nombres vertical.health en el nombre del tema healthcare. En este caso, la plantilla del nombre del tema y el nombre del tema calculado son iguales.

topic.namespace.map={"/vertical(?:\\..*)?": "industrial{sep_coll}", "vertical.health": "healthcare"}

Nota

En este ejemplo, la propiedad de configuración topic.separator es ".", el valor predeterminado.

Debido a que la asignación del espacio de nombres vertical.health tiene prioridad sobre la asignación del espacio de nombres de expresiones regulares, el conector realiza las siguientes acciones:

  • Si el evento de cambio proviene de la colección health de la base de datos vertical, el conector establece el destino en el tema healthcare.

  • Si el evento de cambio proviene de cualquier otro espacio de nombres con el nombre de base de datos vertical, el conector calcula el tema de destino basándose en la plantilla de nombre de tema industrial{sep_coll}. Los siguientes ejemplos ilustran esta asignación:

    • Si el evento de cambio proviene del espacio de nombres vertical.wasteManagement, el conector escribe en el tema industrial.wasteManagement.

    • Si el evento de cambio proviene de la base de datos vertical pero de ninguna colección específica, el conector escribe en el tema industrial.

  • Si el documento de cambio proviene de alguna base de datos que no coincide con el patrón de expresión regular, el conector establece el tema de destino en el esquema de nombres de espacio de nombres predeterminado.

  • Si define las configuraciones topic.prefix y topic.suffix, el conector aplica sus valores al nombre del tema de destino después de realizar la asignación del espacio de nombres.

Además de especificar el nombre de la base de datos y el espacio de nombres en el mapa de espacios de nombres de su tema como se muestra en Nombres de bases de datos y colecciones, puede usar un comodín * para hacer coincidir eventos de cambio de todas las bases de datos y espacios de nombres sin asignaciones.

topic.namespace.map={"carDb": "automobiles", "carDb.ev": "electricVehicles", "*": "otherVehicles"}

En el ejemplo comodín anterior, el conector publica documentos de cambio originados en todas las bases de datos, excepto carDb, al tema otherVehicles.

Volver

Múltiples fuentes

En esta página