Independiente Scheduler
El Persistent Scheduler puede ser incorporado en su aplicación como un embedded dependencia (ver Embedded Implementación). Alternativamente, el Persistent Scheduler puede configurarse como una aplicación independiente con un HTTP interfaz para interacciones entrantes y un Kafka publisher para scheduled trabajos.
Con la configuración independiente, usted puede:
-
Enviar scheduling solicitudes superiores a HTTP a su Scheduling aplicación
-
Tenga su scheduling las solicitudes se ejecutan a la hora indicada
-
Publique el scheduled comando en Kafka
-
Consuma el comando de Kafka y maneje la carga útil en su aplicación consumidora
| Esta página no cubre cómo enviar solicitudes a través de HTTP. Eso está cubierto en Programe su primer trabajo |
Paso 1: Agregue dependencias al Scheduling Aplicación
Para configurar su aplicación independiente, deberá agregar las siguientes dependencias en su aplicación.pom.xml:
<dependencies>
<dependency>
<groupId>com.iconsolutions.ipf.core.platform</groupId>
<artifactId>scheduler-http-controller</artifactId>
</dependency>
<dependency>
<groupId>com.iconsolutions.ipf.core.platform</groupId>
<artifactId>scheduler-external-trigger-kafka</artifactId>
</dependency>
</dependencies>
El scheduler-http-controller el artefacto introduce el HTTP controlador y el core Scheduler funcionalidad.
El scheduler-external-trigger-kafka el artefacto publicará el scheduled comando a un predefinido Kafka tema.
Paso 2: Agregue dependencias a la aplicación consumidora
En su aplicación que manejará el scheduled carga útil, deberá agregar las siguientes dependencias a la pom.xml:
<dependency>
<groupId>com.iconsolutions.ipf.core.platform</groupId>
<artifactId>scheduler-external-trigger-kafka</artifactId>
</dependency>
Este artefacto es un ReceiveConnector que consume los mensajes publicados por scheduler-external-trigger-kafka.
Paso 3: Configure la Aplicación Consumidora
Configurar Kafka Filtros de Encabezado
El Scheduler Kafka módulo de envío (scheduler-external-trigger-kafka) publica mensajes con los siguientes Kafka encabezados:
-
source -
trigger-type
Esto permite a la aplicación consumidora filtrar mensajes utilizando estos encabezados.
| Usted definió originalmente los valores para los encabezados de mensaje en el campo TriggerCommand de la HTTP solicitud al Scheduler HTTP Controlador. Para referencia, consulte Scheduling Su Primer Trabajo (a través de HTTP Biblioteca del Cliente). |
Puede configurar su aplicación consumidora para filtrar valores específicos para estos encabezados añadiendo los valores al arreglo en las rutas de configuración a continuación:
| Encabezado de Kafka | Configurar un arreglo para agregar valor a |
|---|---|
|
|
|
|
Si no incluye valores para el Kafka filtros de encabezado en la configuración, todos los mensajes publicados por su Scheduling la aplicación será consumida. |
Por defecto, la configuración de estos campos está establecida en `["any"]` para dejar claro que cualquier mensaje será filtrado. |
El Kafka Los encabezados serán filtrados si cualquiera de las cadenas en el arreglo de configuración están presentes para un encabezado particular.
Ejemplo
ipf.core.payment-releaser.adaptor.scheduler.kafka {
expected-sources = ["releaser", "other-system"]
expected-trigger-types = ["INSTRUCTION", "TRANSACTION"]
}
Si la configuración anterior fue la suya, entonces los siguientes mensajes serían el resultado del filtrado:
| Origen | Tipo de disparador | ¿Filtrado dentro o fuera? |
|---|---|---|
liberador |
INSTRUCCIÓN |
IN |
otro-sistema |
INSTRUCCIÓN |
IN |
otro-sistema |
TRANSACCIÓN |
IN |
liberador |
algo |
FUERA |
algo |
TRANSACCIÓN |
FUERA |
algo |
algo |
FUERA |
Más allá customisation
Por defecto, hay un Criteria Spring Bean conectado de manera que filtra todos los mensajes.
El predeterminado Bean respeta la configuración anterior.
Sin embargo, si usted desea continuar customise filtración de mensajes, usted puede definir su propio Criteria spring bean en la aplicación consumidora.
Un ejemplo Criteria Spring Bean--
import com.iconsolutions.ipf.core.connector.criteria.AndCriteria;
import com.iconsolutions.ipf.core.connector.criteria.Criteria;
import com.iconsolutions.ipf.core.connector.criteria.MessageHeaderCriteria;
import org.springframework.context.annotation.Bean;
@Bean
public Criteria scheduledCommandFilteringCriteria() {
return AndCriteria.create(
MessageHeaderCriteria.create("source", "your-source"),
MessageHeaderCriteria.create("trigger-type", "INSTRUCTION_PAYMENT_RELEASE"));
}
Implementar ExternalSchedulingHelper Spring Beans
Para que su aplicación consumidora sepa qué hacer con los mensajes consumidos, debe implementar uno o más ExternalSchedulingHelper clases.
Estos definen la clase concreta del comando que apoyan (con el supports método) y lo que debería suceder con el comando soportado (con el execute método).
A continuación se presenta un ejemplo de implementación:
import com.iconsolutions.ipf.core.platform.api.models.ExternalTriggerCommand;
import com.iconsolutions.ipf.core.scheduler.client.connector.receive.kafka.helper.ExternalSchedulingHelper;
import lombok.RequiredArgsConstructor;
import java.util.concurrent.CompletionStage;
@RequiredArgsConstructor
public class TestExternalSchedulingHelper implements ExternalSchedulingHelper {
private final MyExecutingSystem myExecutingSystem;
@Override
public boolean supports(ExternalTriggerCommand request) {
return request instanceof TestExternalSchedulingCommand;
}
@Override
public CompletionStage<Void> execute(ExternalTriggerCommand request) {
return myExecutingSystem.execute(((TestExternalSchedulingCommand)request).getUnitOfWorkId())
.thenApply(__ -> null);
}
}
Debe entonces agregar su concreto ExternalSchedulingHelper clases como Spring Beans.