You cannot use complex object types, only string literal, numbers, booleans etc.
So what you need to do is to create those objects with some bean id (spring boot @Bean stuff) and then refer to them via their bean id. Something ala .additionallProperties("xxx", "#myBeanId") On Thu, Jan 5, 2023 at 6:10 PM Martin Pelikán <pelda...@gmail.com> wrote: > My case is related to connecting to Azure EventHubs Avro Schema Registry. > > TokenCredential cred = new > > ClientSecretCredentialBuilder().tenantId("xxx").clientId("xxx").clientSecret("xx").build(); > props.put("schema.registry.credential", cred); > > Another case that comes to my mind is with OAUTHBEARER authentication. > Users could supply instantiated AuthenticateCallbackHandler class to > the sasl.login.callback.handler.class property. > > TokenCredential as part of Properties works with > org.apache.kafka.clients.consumer.KafkaConsumer. > > čt 5. 1. 2023 v 17:59 odesílatel Claus Ibsen <claus.ib...@gmail.com> > napsal: > > > > Whats the real world use-case for additional properties as Object or Map. > > What would kafka understand and use these for? > > > > On Thu, Jan 5, 2023 at 5:12 PM Martin Pelikán <pelda...@gmail.com> > wrote: > > > > > Hi Camel experts, > > > > > > I am struggling with a Kafka component and passing in parameters via > > > additionalProperties. I am not able to propagate an Object. I tested > > > only Endpoint DSL. According to the Camel docs and APIs, I am allowed > > > to pass in an instance of Map<String, Object> > > > > > > Camel version: 3.18.4 > > > > > > ----Pseudocode----- > > > > > > @Configuration > > > Class SpringConfig > > > > > > @Bean(name = "autowiredMap") > > > public Map<String, Object> autowiredMap() { > > > var map = new HashMap<String, Object>(); > > > map.put("testStringKey3", "testStringValue3"); > > > map.put("testObjectKey3", new Object()); > > > } > > > > > > ------- > > > > > > Class MainRoute extends RouteBuilder() > > > > > > @Autowired > > > @Qualifier("autowiredMap") > > > Map<String, Object> autowiredMap; > > > > > > var map = new HashMap<String, Object>(); > > > map.put("testStringKey1", "testStringValue1"); > > > map.put("testObjectKey1", new Object()); > > > > > > from(kafka(…basic configuration works) > > > .schemaRegistryURL(http://original.com) > > > .additionalProperties(map) > > > .additionalProperties("testStringKey2", "testStringValue2") > > > .additionalProperties("testObjectKey1", new Object()) > > > .additionalProperties("schema.registry.url", > http://overwritten.com) > > > .additionalProperties(autowiredMap)... > > > > > > Expected: > > > > > > All properties from all additionalProperties methods are propagated to > > > the Kafka Properties configuration object. > > > > > > In reality, Properties will contain the following: > > > schema.registry.url=http://overwritten.com > > > testStringKey1=testStringValue1 > > > testStringKey2=testStringValue2 > > > > > > Non-string values are not propagated at all. Values from autowired Map > > > are not propagated at all. Autowired map is treated as > > > additionalProperties.autowiredMap=HashMap@123456 > > > > > > I can see those String values being added to the Kafka Endpoint URI: > > > > > > > kafka://additionalProperties.testStringKey1=xxx&additionalProperties.testStringKey2=xxx&additionalProperties.schema.registr.url=xxx.. > > > > > > Is it a bug in Camel or did I understand the documentation wrong? I > > > can prepare a test case later > > > > > > Best regards, > > > > > > Martin > > > > > > > > > -- > > Claus Ibsen > > ----------------- > > @davsclaus > > Camel in Action 2: https://www.manning.com/ibsen2 > -- Claus Ibsen ----------------- @davsclaus Camel in Action 2: https://www.manning.com/ibsen2