From 5041756f34f0ab6e39793beafcd8e4b0eea89705 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Delbrayelle?= Date: Mon, 18 May 2020 18:12:08 +0200 Subject: [PATCH] feat: set a topic naming convention closes #22 --- generators/app/index.js | 19 +++++++++++++++---- .../kafka/consumer/EntityConsumer.java.ejs | 4 ++-- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/generators/app/index.js b/generators/app/index.js index a89b111..77fa835 100644 --- a/generators/app/index.js +++ b/generators/app/index.js @@ -136,6 +136,7 @@ module.exports = class extends BaseGenerator { // read config from .yo-rc.json this.baseName = this.jhipsterAppConfig.baseName; this.dasherizedBaseName = _.kebabCase(this.baseName); + this.snakeCaseBaseName = _.snakeCase(this.baseName); this.packageName = this.jhipsterAppConfig.packageName; this.packageFolder = this.jhipsterAppConfig.packageFolder; this.clientFramework = this.jhipsterAppConfig.clientFramework; @@ -210,8 +211,8 @@ module.exports = class extends BaseGenerator { this.entities.forEach(entity => { this.entityClass = entity; - this.dasherizedEntityClass = _.kebabCase(entity); this.camelCaseEntityClass = _.camelCase(entity); + this.snakeCaseEntityClass = _.snakeCase(entity); if (this.components.includes('consumer')) { if (consumersCpt === 0) { @@ -220,7 +221,12 @@ module.exports = class extends BaseGenerator { kafkaProperties += ` ${this.camelCaseEntityClass}: - name: ${this.dasherizedEntityClass}-topic + # This is a template topic naming convention which can be changed. + # %3Cmessage_type%3E.%3Capplication_name%3E.%3Centity_name%3E with (all in snake_case): + # - %3Cmessage_type%3E: queuing, logging, tracking, etl/db, streaming, push, user... + # - %3Capplication_name%3E: the application base name + # - %3Centity_name%3E: the entity name which is consumed + name: queuing.${this.snakeCaseBaseName}.${this.snakeCaseEntityClass} enabled: true '[key.deserializer]': org.apache.kafka.common.serialization.StringDeserializer '[value.deserializer]': ${this.packageName}.service.kafka.deserializer.${entity}Deserializer @@ -244,8 +250,8 @@ module.exports = class extends BaseGenerator { this.entities.forEach(entity => { this.entityClass = entity; - this.dasherizedEntityClass = _.kebabCase(entity); this.camelCaseEntityClass = _.camelCase(entity); + this.snakeCaseEntityClass = _.snakeCase(entity); if (this.components.includes('producer')) { if (producersCpt === 0) { @@ -255,7 +261,12 @@ module.exports = class extends BaseGenerator { kafkaProperties += ` ${this.camelCaseEntityClass}: - name: ${this.dasherizedEntityClass}-topic + # This is a template topic naming convention which can be changed. + # %3Cmessage_type%3E.%3Capplication_name%3E.%3Centity_name%3E with (all in snake_case): + # - %3Cmessage_type%3E: queuing, logging, tracking, etl/db, streaming, push, user... + # - %3Capplication_name%3E: the application base name + # - %3Centity_name%3E: the entity name which is produced + name: queuing.${this.snakeCaseBaseName}.${this.snakeCaseEntityClass} enabled: true '[key.serializer]': org.apache.kafka.common.serialization.StringSerializer '[value.serializer]': ${this.packageName}.service.kafka.serializer.${entity}Serializer`; diff --git a/generators/app/templates/src/main/java/package/service/kafka/consumer/EntityConsumer.java.ejs b/generators/app/templates/src/main/java/package/service/kafka/consumer/EntityConsumer.java.ejs index 3814f34..a582acd 100644 --- a/generators/app/templates/src/main/java/package/service/kafka/consumer/EntityConsumer.java.ejs +++ b/generators/app/templates/src/main/java/package/service/kafka/consumer/EntityConsumer.java.ejs @@ -34,8 +34,8 @@ public class <%= entityClass %>Consumer extends GenericConsumer<<%= entityClass private final Logger log = LoggerFactory.getLogger(<%= entityClass %>.class); - public <%= entityClass %>Consumer(@Value("${kafka.consumer.<%= camelCaseEntityClass %>.name}") final String topic, final KafkaProperties kafkaProperties) { - super(topic, kafkaProperties.getConsumer().get("<%= camelCaseEntityClass %>")); + public <%= entityClass %>Consumer(@Value("${kafka.consumer.<%= camelCaseEntityClass %>.name}") final String topicName, final KafkaProperties kafkaProperties) { + super(topicName, kafkaProperties.getConsumer().get("<%= camelCaseEntityClass %>")); } @Override