Configurar la función
Comencemos a codificar el microservicio. El directorio de funciones, en este caso functions/countfunction, contiene:
- El archivo principal de función CountAlert.java
- El archivo de configuración catalyst-config.json
- Los archivos de biblioteca JAR
- Otras dependencias
Agregaremos código en el archivo CountAlert.java. Puedes usar cualquier IDE de tu elección para configurar la función.
Copia el código que se muestra a continuación y pégalo en CountAlert.java y guarda el archivo.
import com.catalyst.Context;
import com.catalyst.basic.BasicIO;
import com.catalyst.basic.ZCFunction;
import com.zc.component.cache.ZCCache;
import com.zc.component.mail.ZCMail;
import com.zc.component.mail.ZCMailContent;
import java.util.logging.Logger;
import java.util.logging.Level;
public class CountAlert implements ZCFunction {
private static final Logger LOGGER = Logger.getLogger(CountAlert.class.getName());
private static final String FROM_EMAIL="emma@zylker.com"; // La dirección de correo electrónico del remitente. Reemplaza esto con la dirección de correo que configuraste en Mail.
private static final String TO_EMAIL="brandon.cooper@zylker.com"; // Reemplaza esto con la dirección de correo electrónico a la que deseas que se envíe el correo de alerta.
@Override
public void runner(Context context, BasicIO basicIO) throws Exception {
try {
// Pasa el nombre de la funcionalidad que se obtuvo de la entrada como parámetro. El nombre de la funcionalidad puede ser 'CRM' o 'Desk'.
String featureName = (String) basicIO.getParameter("feature_name");
// Pasa el conteo umbral que se obtuvo de la entrada como parámetro
String mailCountThreshold = (String) basicIO.getParameter("mail_count_threshold");
// Obtiene el conteo actual para la funcionalidad desde el segmento predeterminado de Catalyst Cache
String value = ZCCache.getInstance()
.getCacheValue("COUNTER_" + featureName)
.getValue();
// Si el valor es null, entonces el conteo se establece en 1. Esto se hace durante la primera ejecución para la funcionalidad.
if (value == null) {
ZCCache.getInstance()
.putCacheValue("COUNTER_" + featureName, String.valueOf(1), 1l);
} else {
Integer count = Integer.valueOf(value);
// Si el valor no es null, entonces el conteo se incrementa en 1.
count++;
// Escribe el valor del conteo en el segmento predeterminado de Catalyst cache
ZCCache.getInstance().putCacheValue("COUNTER_"+featureName,count.toString(),1l);
// Si el conteo actual es mayor que el valor umbral, entonces se envía una alerta por correo al receptor configurado arriba
if (count > Integer.valueOf(mailCountThreshold)) {
ZCMailContent content = ZCMailContent.getInstance();
content.setFromEmail(FROM_EMAIL);
content.setSubject("Alert!");
content.setContent("Count exceeded the threshold limit for the feature:" +featureName);
content.setToEmail(TO_EMAIL);
ZCMail.getInstance()
.sendMail(content);
LOGGER.log(Level.INFO, "Email alert sent");//Escrito en los logs. Puedes ver este log desde Logs bajo la sección Monitor en la consola
}
}
// Maneja el código de estado 200
basicIO.setStatus(200);
basicIO.write("The function executed successfully");
}catch(Exception e)
{
LOGGER.log(Level.SEVERE,"Exception occurred while processing",e); //Escrito en los logs. Puedes ver este log desde Logs bajo la sección Monitor en la consola
// Maneja el código de estado 500, cuando ocurre una excepción
basicIO.setStatus(500);
basicIO.write("Error in the function execution");
}
}
}
Funcionamiento de la función Basic I/O
Como se discutió en la Introducción, la función obtiene las entradas para las variables feature_name y mail_count_threshold del usuario a través de la API, cuando se invoca. Obtiene el valor actual del contador desde la caché y luego lo incrementa en 1 después de cada invocación. Luego escribe el nuevo valor del contador en la caché.
Si el valor actual del contador es mayor que el límite umbral especificado por el usuario, la alerta por correo se envía a la dirección definida en el código. Esta información también se envía a Catalyst Logs con un mensaje apropiado. Puedes verificar esto desde Logs bajo la sección Monitor en la consola de Catalyst.
Última actualización 2026-03-20 21:51:56 +0530 IST