Dejaré esta entrada como recordatorio y como evidencia de como se comporta el límite de 50,000 eventos diarios de Salesforce, con suscripciones mediante componentes Lightning.
Primero que nada, para saber cuantos eventos has consumido diariamente, solo se puede hacer mediante la API REST de Salesforce, si aún existe la herramienta workbench de salesforce gratuita, la cual tiene acceso a esta API, lo puedes hacer de la siguiente manera:
Tienes que ir al menú Utilities, REST Explorer y seleccionar lo que muestro en la siguiente imagen para ver los límites de Salesforce.
Luego damos clic en DailyStandardVolumePlatformEvents, con esto podremos ver la cantidad máxima de eventos estándar por día, en este caso el límite es de 50,000 y la otra cantidad son los eventos que quedan disponibles.
El problema o detalle, como lo quieras ver, es que esa cantidad restante NO SE RESTABLECE a medianoche o luego de transcurrir 24 horas, entonces, ¿cómo funciona el límite diario de los eventos estándar?, ¿cuándo se restablece el valor?
Aquí mis conclusiones: conforme se crean eventos en Salesforce, el “restante” va disminuyendo, y esa es la cantidad que de eventos que te quedan para crear. Según la documentación de Salesforce, según la licencia de tu organización tienes un límite por día y por hora.
Esperaba que luego de 24 horas esa cantidad se restableciera de un solo golpe, pero no ocurre así, sino que el “restante” se va incrementando según pasan las horas. Lo que me hace suponer que al crear un evento, éste tiene una vida de 24 horas, con lo cual el restablecimiento sucede conforme esa vida del evento.
¿Qué se toma en consideración para disminuir la cantidad restante?
Suponía que al momento de crear un evento en Salesforce, como se muestra en las siguientes imágenes, el contador (Remaining) empezaba a disminuir:
La forma en que Salesforce empieza a disminuir la cantidad restante de eventos (por lo menos en las suscripciones mediante componente Lightning), es mediante el atributo empApi, que se implementa en el componente de lightning que hayas creado.
Cada vez que se publica (publish) un evento, la función callback es invocada y allí es donde realmente empieza a disminuir el contador de los eventos.
Ahora, imagina que tienes a dos usuarios cada uno en un navegador diferente, en la misma página en donde se realiza la suscripción y ambos clientes están “escuchando”, a la espera de eventos, bueno pues una vez que se hace la publicación (publish) del evento, en ambos navegadores se despliega el evento, con lo cual en lugar de que se haya descontado un solo evento, se disminuyen dos. Con cada navegador abierto, en la página donde se usa el componente para “escuchar” los eventos, se consume un evento.
Un ejemplo más sencillo, supongamos que ahora son 10 usuarios cada uno en su navegador, en la misma página de Salesforce en donde se tiene el componente que se suscribe a la espera de algún evento, se hace un EventBus.publish, (imagen 2) y luego el componente que esta “escuchando” gracias a que ya esta “suscrito” (imagen 3), detecta que se publicó un evento y lo “muestra” o “ejecuta” en cada uno de los navegadores, con lo cual la cantidad restante (Remaining) de DailyStandardVolumePlatformEvents , se disminuye en 10.