DPS Servicio de Notificación

Notificationsse envían después de que se realizan ciertas operaciones contra la configuración.

Notificationsestán deshabilitados por defecto. Para habilitarlos, propiedad ipf.dps.notification-service.enabled debe establecerse en verdadero.

Ahora solo soportamos notificaciones de operaciones CRUD. Por lo tanto, después de las operaciones de creación, actualización y eliminación, se envía una notificación.

Aquí está el ejemplo del mensaje DpsCrudNotification:

{
  "settings": "settingType",
  "logicalUniqueKey": "logicalUniqueKey",
  "action": "CREATED"
}

Aquí está el ejemplo de la interfaz DpsNotificationServicePort:

public interface DpsNotificationServicePort {

    <T> CompletionStage<Void> sendSettingCrudNotification(Setting<T> setting, String settingType, DpsCrudNotification.CrudNotificationAction action);

}

Al crear un entorno que requiere una aprobación, la notificación correspondiente no se enviará en el momento de la creación. Se enviará cuando se apruebe la configuración.

DPS Servicio de Notificación Kafka

Esta es la implementación de kafka de la DPS Servicio de notificaciones. Todas las notificaciones se envían a un tema de kafka dedicado.

Aquí está el ejemplo de configuración hocon para DPS Servicio de Notificación Kafka

ipf.dps {
  notification-service {
    enabled = true
    kafka {
      producer {
        topic = DPS_CRUD_NOTIFICATION
        restart-settings = ${common-flow-restart-settings}
        kafka-clients {
          group.id = dps-crud-notification-group
        }
      }
    }
  }
}

common-flow-restart-settings {
  min-backoff = 1s
  max-backoff = 5s
  random-factor = 0.25
  max-restarts = 5
  max-restarts-within = 10m
}

Implementaciones personalizadas (sobrescribir el predeterminado)

DPSpermite a los servicios posteriores proporcionar su propia implementación de DpsNotificationServicePort. Si un bean de ese tipo está presente en el contexto de la aplicación,DPS lo utilizará en lugar del integrado Kafka/Adaptadores sin operación.

Cómo funciona

DPSproporciona dos adaptadores predeterminados, (Kafka y No-op) a través de la autoconfiguración.

Esos beans se declaran con @ConditionalOnMissingBean(DpsNotificationServicePort.class).

Por lo tanto, cualquier contenido proporcionado por el usuario bean de tipo DpsNotificationServicePort toma automáticamente precedencia.

Interacción con ipf.dps.notification-service.enabled

verdadero DPS crearía el Kafka adaptador a menos que proporcione un custom bean.

falso →DPS crearía el adaptador No-op a menos que usted proporcione un custom bean.

Personalizado bean está presente →custom la implementación se utiliza independientemente del valor de la propiedad.

Compatibilidad hacia atrás

Consumidores existentes que utilizan Kafka o No-op continúe trabajando sin cambios.

Las propiedades permanecen iguales:

ipf.dps.notification-service.enabled=true|false

ipf.dps.notification-service.send-notifications-for-scheduled-settings=true|false