He hecho el siguiente experimento y funciona:

  • Se configuró el dominio de cuadrícula de eventos azure con 2 temas.
  • Publicó un evento en el dominio con información sobre el tema 1.
  • El evento se entregó con éxito al tema 1 (y no al tema 2) como se esperaba.

Preguntas:

  1. ¿Es posible enviar un evento al dominio para que se pueda entregar a varios temas (en el caso anterior, tema 1 y tema 2)?
  2. Si es posible, ¿cómo lo hago?
  3. Si no es posible hoy, ¿estará disponible más adelante?
1
Raghu 5 feb. 2019 a las 18:34

2 respuestas

La mejor respuesta

¿Es posible enviar un evento al dominio para que se pueda entregar a varios temas (en el caso anterior, tema 1 y tema 2)?

Esto no es estrictamente posible hoy. Generalmente, el escenario de transmisión que ha descrito se resuelve creando múltiples suscripciones sobre el mismo tema. La razón principal para publicar en diferentes temas dentro de un dominio es para fines de autorización.

Si desea que un grupo diferente de usuarios pueda suscribirse a eventos del tema 1 frente al tema 2, entonces tiene sentido dividirlos en dos temas. Si los mismos usuarios pueden tener acceso al mismo conjunto de eventos, generalmente se les puede otorgar acceso al mismo tema.

Si no desea que todos los eventos fluyan a cada punto final, aquí es donde los filtros se vuelven aplicables.

Si es posible, ¿cómo lo hago?

Si desea que el mismo evento esté disponible en dos temas diferentes, tendrá que publicar el evento dos veces en el dominio, una para cada tema.

Una segunda opción, dependiendo de su caso de uso, es la disponibilidad de suscripciones a eventos de estilo "firehose". Cada dominio también puede admitir un conjunto limitado de suscripciones a eventos en el ámbito del dominio (suscríbase a todos los eventos del dominio). Esto no se publica en ambos temas, pero podría ser una arquitectura alternativa según sus necesidades.

Si no es posible hoy, ¿estará disponible más adelante?

TBD. ¿Tiene un caso de uso en mente que esté bloqueado?

1
Bahram Banisadr 5 feb. 2019 a las 23:22

En primer lugar, existe una diferencia entre los temas de dominio y los temas personalizados. Los temas de dominio están desacoplados libremente de los suscriptores y se están creando dinámicamente según el interés del suscriptor.

En otras palabras, si no hay interés (sin suscripción) para ese tema de dominio, el tema de dominio no existe en el Dominio de eventos y el mensaje de evento publicado para ese tema de dominio lo reenviará al suscriptor del dominio (si hay un suscripción de dominio).

En su caso, ha creado dos suscripciones en el dominio de eventos topic1 y topic2. Si estas suscripciones se crearon por primera vez para esos temas, el dominio creará automáticamente estos temas (tema1, tema2) en el recurso del dominio de eventos.

La vista previa del dominio de eventos de AEG permite enviar una serie de eventos a los temas del dominio de eventos. El siguiente fragmento de pantalla muestra un ejemplo de eventos utilizando un esquema de entrada predeterminado (como EventGridSchema):

[
 {
   "topic": "topic1",
   "id": "12345",
   "subject": "/myapp/vehicles/motorcycles",
   "eventType": "recordInserted",
   "eventTime": "2019-02-05T16:57:16.5734282Z",
   "data": {
     "make": "Ducati",
     "model": "Monster"
     }
 },
 {
   "topic": "topic2",
   "id": "67890",
   "subject": "/myapp/vehicles/motorcycles",
   "eventType": "recordInserted",
   "eventTime": "2019-02-05T16:57:16.5734282Z",
   "data": {
     "make": "Ducati",
     "model": "Monster"
     }
 }
]

Como puede ver, cada evento anterior (en este EventGridSchema) está asignando una fuente de interés al tema del dominio. El caso especial es cuando usamos un CustomInputSchema, donde este mapeo se puede personalizar (como valor predeterminado y / o sourceField).

La respuesta a su pregunta sobre la "transmisión temática" en el modelo Pub / Sub de AEG es NO. El modelo AEG solo admite la suscripción a un tema . Sería bueno suscribirse a varios temas dentro del dominio del evento, por ejemplo, utilizando un filtrado avanzado con la clave = tema, pero no funciona.

Suscripción al dominio de eventos para el patrón de distribución:

El caso especial puede ser una suscripción al dominio de eventos y utilizar un filtrado avanzado, consulte el siguiente ejemplo:

 "advancedFilters": [
      {
        "values": [
          "topics/topic1",
          "topics/topic2"
        ],
        "operatorType": "StringEndsWith",
        "key": "topic"
      }

Según la "solución alternativa" anterior, puede crear varios grupos de distribución (difusión) dentro del dominio del evento. El límite de suscripciones a eventos de ámbito de dominio es 50 durante esta vista previa pública.

Los dominios de eventos son una gran característica en el modelo de eventos de AEG, por ejemplo, hay una agregación de eventos incorporada (patrón Fan-In) en el tema de nivel de dominio. Si el evento de origen de interés tiene un tema de dominio desconocido (no hay suscripción), el suscriptor del dominio puede capturar el evento.

1
Roman Kiss 5 feb. 2019 a las 22:32