Products Downloads


French version


Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

The execution of VaToolBxSendToAvroKafka and VaToolBxSendToAvroKafkaWithKey functions is based on a configuration file in YML format defining the configuration of each Adelia logical broker manipulated in the 4GL source by the two VaToolBxSendToAvroKafka and VaToolBxSendToAvroKafkaWithKey functions.

 


Example of 4GL:

CALL_DLL 'VaToolBx.dll' 'VaToolBxSendToAvroKafka' 'myKafkaLogicalBroker' myTopic myInstance myReturnCode myReturnMessage 


CALL_DLL 'VaToolBx.dll' 'VaToolBxSendToAvroKafkaWithKey' 'myKafkaLogicalBroker' myTopic myInstance myKey myReturnCode myReturnMessage

...


In this example, myKafkaLogicalBroker corresponds to a logical broker whose characteristics are defined in this configuration file. 


This file is defined when starting up the JVM with the environment variable com.hardis.adelia.kafka.configuration

.. -Dcom.hardis.adelia.kafka.configuration=C:\directory\AdeliaKafkaConfig.yml

...


Example of configuration to start up Tomcat (by adapting catalina.bat):

...

%_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -D%ENDORSED_PROP%="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

 


After:

%_EXECJAVA% %LOGGING_CONFIG% %LOGGING_MANAGER% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -D%ENDORSED_PROP%="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" -Dcom.hardis.adelia.kafka.configuration="D:\MyConfig\AdeliaKafkaConfig.yml" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%

...

     LOAD_DLL 'VaToolBx'

or CALL_DLL 'VaToolBxSendToAvroKafka'
or CALL_DLL 'VaToolBxSendToAvroKafkaWithKey'

 



Example of configuration file:

Pas de format
#-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------##
#
# Adelia Kafka settings (logical brokers from Adelia VaToolBxSendToAvroKafka & VaToolBxSendToAvroKafkaWithKey)
#    Example: CALL_DLL 'VaToolBx.dll' 'VaToolBxSendToAvroKafka' 'myKafkaLogicalBroker' Topic Instance ReturnCode ReturnMessage##ReturnMessage
#
# This file is defined when running jvm with -Dcom.hardis.adelia.kafka=C:\...\KafkaAdeliaConfig.yml#yml
#    Example: update catalina.bat to launch Tomcat with this property##property
#

# Properties names:
#    Kafka  properties : bootstrap.servers, etc. please refer https://kafka.apache.org/documentation/#producerconfigs##producerconfigs
#    Adelia properties : name starting with 'adelia.' for example 'adelia.sendmode'

# Adelia Kafka logical broker 'myKafkaLogicalBroker'
myKafkaLogicalBroker:
   # bootstrap.servers => a list of Kafka brokers
   bootstrap.servers: ps972.hardis.fr:9092
   # schema.registry.url => schema registry url (for example http://localhost:8081
   schema.registry.url: 
   # acks => number of acknowledgments the producer requires the leader to have received before considering a request complete (string value so "0" instead of 0).
   acks: "0"
   # retries => 0 so if the request fails then the producer does not retry
   retries: 0
   # max.block.ms => how long KafkaProducer.send() and KafkaProducer.partitionsFor() will block
   max.block.ms: 123
   # key.serializer => serializer class for key that implements the org.apache.kafka.common.serialization.Serializer interface.
   key.serializer: org.apache.kafka.common.serialization.StringSerializer
   # value.serializer => serializer class for value that implements the org.apache.kafka.common.serialization.Serializer interface.
   value.serializer: org.apache.kafka.common.serialization.ByteArraySerializer
   # producer.type => async
   producer.type: async
   # linger.ms => delay (default value 0) to define how the producer groups together any records that arrive in between request transmissions into a single batched request. 
   linger.ms: 0
   # adelia.client.id => client.id: id to pass to the server when making requests so the server can track the source of requests beyond just IP/port by passing a producer name for things like server-side request logging ('auto' value for host name for IP address sender).
   adelia.client.id: auto
   # adelia.partition => partition (if a valid partition number is specified that partition will be used when sending the record. If no partition is specified but a key is present a partition will be chosen using a hash of the key. If neither key nor partition is present a partition will be assigned in a round-robin fashion).
   # adelia.partition: 
  # adelia.sendmode => sending mode ('fireandforget' is default value)
   # adelia.sendmode: fireandforget#fireandforget

# Adelia Kafka logical broker 'myKafkaLogicalBroker2'
myKafkaLogicalBroker2:
   bootstrap.servers: ps123.hardis.fr:9092
   ..
   
# Adelia Kafka logical broker 'myKafkaLogicalBroker3'
myKafkaLogicalBroker3:
   bootstrap.servers: ps456.hardis.fr:9092   
   
#-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 



In this example, this file defines the configuration of 3 logical brokers: myKafkaLogicalBroker, myKafkaLogicalBroker2 and myKafkaLogicalBroker3.

...

nameAdeliaLogicalBroker1:

# this is a comment line in YML as it begins with a hash

propertyname1 : value1
propertyname2 : value2
propertyname3 : value3
..

nameAdeliaLogicalBroker2:

this is a comment line in YML as it begins with a hash
propertyname1 : value1
propertyname8 : value8
propertyname11 : value11
..

..

 


Each property is either an:

...

Mapped on the client.id property
Identifier to transmit to the server during requests so this can track the source of requests beyond the IP/port address by transmitting a producer name for tasks such as server-side request logging.
'auto' = sender's IP address 


Hardis - Haut de page

↑ Top of page