I have tried the approach mentioned on official documentations to override the bootstrap servers in kafka client config.
https://micronaut-projects.github.io/micronaut-kafka/latest/guide/#kafkaClient
However, in my case, I am getting one JaaS config from other bean dependency and other one is available in secret path. Having a custom configuration just load one JaaS config and other consumer get disconnected.
For example,
kafka:
sasl:
mechanism: PLAIN
jaas:
config: >-
org.apache.kafka.common.security.plain.PlainLoginModule required
username="$ConnectionString"
password="%s";
security:
protocol: SASL_SSL
consumers:
abc-consumer-client:
sasl:
mechanism: PLAIN
jaas:
config: >-
org.apache.kafka.common.security.plain.PlainLoginModule required
username="$ConnectionString"
password="%s";
security:
protocol: SASL_SSL
xyz-client:
sasl:
mechanism: PLAIN
jaas:
config: >-
org.apache.kafka.common.security.plain.PlainLoginModule required
username="$ConnectionString"
password="%s";
security:
protocol: SASL_SSL
I related the micronaut-kafka with spring kafka implementation. It seems like I will have to override the beans to achieve this but getting stuck on which order I should override and in which sequence to achieve this.
Similar Spring Kafka reference- spring-kafka application.properties configuration for JAAS/SASL not working
I have tried the options listed on micronaut documentation but in my case, other jaas config is coming from other bean depedency which makes a GRPC call to fetch bootstrap URL and JaaS config.
What am I looking for here is the order in which I should override the micronaut-kafka beans to achieve two consumer connecting to two different bootstrap servers with each having its own JaasConfig and other JaasConfig is dependent on other service call.
Finally, I was able to figure out this problem myself.
In order to solve this problem, I had to override the
KafkaDefaultConfiguration
bean and include the properties in the environment variable based on groupID.You can actually override properties at runtime during the bean instantiation phase. For instance,