es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Filtro de suscripción de tema SNS en un JSON complejo.

Tengo un json como el siguiente que se publica en mi tema sns cada vez que un cliente es desactivado por nuestra api. La api también publica mensajes en el mismo tema cuando se actualizan / insertan otras tablas / columnas.

Me gustaría crear un filtro de suscripción que filtre si el cliente está siendo desactivado. Por ejemplo, como sigue:

El filtro de suscripción anterior no funciona. Por ejemplo, si agrego el filtro, no recibo ningún mensaje en mi cola. Pero si lo quito, recibo el mensaje publicado en la cola. Se agradecen todas las ayudas.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Solución:

    La razón por la que el filtro de suscripción no funciona es porque solo filtra los cambios en la columna “IsActive” con el nuevo valor de “0”. Sin embargo, el mensaje JSON también incluye otras columnas que pueden actualizarse, lo que activaría el mismo tema.

    Para filtrar solo la inactivación del cliente, el filtro de suscripción debe actualizarse para incluir todas las columnas que pueden actualizarse cuando un cliente se inactiva. Por ejemplo, si la inactivación requiere cambiar la columna “IsActive” a “0” y la columna “EndDate” a la fecha de inactivación, el filtro de suscripción sería el siguiente:

    {
         "operation": ["UPDATE"],
         "tableName": ["Customer"],
         "columnName": ["IsActive", "EndDate"],
         "hasChanged": [true, true],
         "newValue": ["0", ${"DataType": "string", "StringValue": "${aws:CurrentTime}"}]
    }
    

    El filtro de suscripción anterior solo permitirá que se entreguen mensajes a la cola SQS especificada si hay una operación de actualización en la tabla “Customer”, y la columna “IsActive” ha cambiado a “0” y la columna “EndDate” ha cambiado a la fecha y hora actual, según el reloj del sistema AWS.

    Nota: Dado que la fecha de inactivación puede variar según el momento en que se aplique la actualización, la hora actual se utiliza como valor para la columna “EndDate” en el filtro de suscripción.

Comments are closed.