Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Biblioteket består af 2 moduler. Begge biblioteker findes som moduler på platformen. Det betyder at de Som anvender er det kun nødvendigt med kendskab til et af modulerne. Det er modulet monlog-producer-api. Dette skal inkluderes som provided in pom.xml og tilføjes som en dependency i jboss-deployment-structure.xml.

...

Dette bibliotek indeholder api og interface definitioner samt ServiceLoader implementeret i form af klassen RegisterServiceProvider. Det er det eneste bibliotek der er brug for at inkludere i sit projekt.

POM groupId: dk.nsp.minlog

...

Wildfly modul navn: dk.sds.nsp.minlog.producer

Dette bibliotek har en afhængighed til minlog-producer-api biblioteket, så det er kun nødvendigt at anvende dette bibliotek i sit projekt.

API Beskrivelse og anvendelse

...

Hvis man kalder getRegisterService() metoden UDEN at have minlog-producer-registration på sin classpath så får man en test implementering af RegisterService. Denne udgave sender IKKE data til MinLog og validerer heller ikke input. Den logger udelukkende kald til via log4j. Afvikling i en NSP Wildfly container vil altid indeholde minlog-producer-registration.

RegisterService

Når man har anvendt RegisterServiceProvider til at få en implementering af RegisterService er der 4 metoder man kan kalde.

void init(String topiv Properties propertieskafkaProperties)

Denne metode skal kaldes inden man kalder andre metoder. Hvis man ikke går dette får man en exception. Første argument er det Kafka topic der skal anvendes. De properties der skal angives som argument er dem der kan anvendes til at konfigurere en KafkaProducer.

...

Kaldes når servicen ikke længere skal bruges. Sørger for pænt at lukke forbindelsen til Kafka osv.

PropertyFilter

Lille hjælper klasse man kan anvende til at filtrere properties så de kan anvendes til init metoden i RegisterService.

Properties fitlerProperties(String prefix, Properties kafkaProperties)

Denne metode kan anvendes til at filtrere kafkaProperties  så der kun returneres de properties der matcher det prefix  der er angivet. Prefix er fjernet fra properties der returneres.

LogEntry

Dette svarer til et LogDataEntry element i https://www.nspop.dk/display/public/web/MinLog2+-+Min+Log+Registrering+-+Guide+til+anvendere#MinLog2MinLogRegistreringGuidetilanvendere-Request og der henvises derfor til dette dokument.

...

Nendenstående er et eksempel på hvordan man anvender biblioteket.

Application.propertiees

Code Block
languagetext
# Kafka
kafka.producer.bootstrap.servers=kafka:9092
kafka.producer.client.id=MinLog2-producer
kafka.producer.key.serializer=org.apache.kafka.common.serialization.StringSerializer
kafka.producer.value.serializer=org.apache.kafka.common.serialization.StringSerializer
kafka.topic=MIT_TOPIC


Kode


Code Block
languagejava
// Load and filter properties
Properties properties = new Properties();
properties.load(RegisterServiceImplTest.class.getResourceAsStream("/application.properties"));

Properties filterProperties = new PropertyFilter().filterProperties("kafka.producer.", properties);

// Opret instans
RegisterService registerService = RegisterServiceProvider.getRegisterService();
registerService.init(kafkaConfigurationPropertiesproperties.get("kafka.topic"), filterProperties);

// Send data til MinLog
RegistrationResult result = registerService.addRegistrations(createLogEntryList());
registerService.flush();
if(result.getNumberFailed() > 0) {
	// Håndter fejlede registreringer her. 
}

// Send flere data til MinLog. Dette kunne f.eks. være en anden transaktion.
registerService.addRegistrations(createLogEntryList());
registerService.flush();
if(result.getNumberFailed() > 0) {
	// Håndter fejlede registreringer her. 
}

// Luk service. F.eks. når applikationen stoppes.
registerService.close();

...