77import org .apache .kafka .streams .KafkaStreams ;
88import org .apache .kafka .streams .Topology ;
99
10+ import java .util .ArrayList ;
1011import java .util .Properties ;
1112
1213public class StreamsRegistry implements AutoCloseable {
@@ -25,6 +26,40 @@ public String getId() {
2526
2627 private final Object agent ;
2728
29+ public static Properties filterProperties (Properties props ) {
30+ ArrayList <String > allowedKeys = new ArrayList <>();
31+ allowedKeys .add ("security.protocol" );
32+ allowedKeys .add ("sasl.mechanism" );
33+ allowedKeys .add ("sasl.jaas.config" );
34+ allowedKeys .add ("sasl.login.callback.handler.class" );
35+ allowedKeys .add ("ssl.keystore.location" );
36+ allowedKeys .add ("ssl.keystore.password" );
37+ allowedKeys .add ("ssl.key.password" );
38+ allowedKeys .add ("ssl.keystore.type" );
39+ allowedKeys .add ("ssl.keymanager.algorithm" );
40+ allowedKeys .add ("ssl.truststore.location" );
41+ allowedKeys .add ("ssl.truststore.password" );
42+ allowedKeys .add ("ssl.truststore.type" );
43+ allowedKeys .add ("ssl.trustmanager.algorithm" );
44+ allowedKeys .add ("ssl.endpoint.identification.algorithm" );
45+ allowedKeys .add ("ssl.provider" );
46+ allowedKeys .add ("ssl.cipher.suites" );
47+ allowedKeys .add ("ssl.protocol" );
48+ allowedKeys .add ("ssl.enabled.protocols" );
49+ allowedKeys .add ("ssl.secure.random.implementation" );
50+ allowedKeys .add ("ssl.keystore.key" );
51+ allowedKeys .add ("ssl.keystore.certificate.chain" );
52+ allowedKeys .add ("ssl.truststore.certificates" );
53+ allowedKeys .add ("bootstrap.servers" );
54+ Properties nextProps = new Properties ();
55+ for (String key : allowedKeys ) {
56+ if (props .containsKey (key )) {
57+ nextProps .setProperty (key , String .valueOf (props .get (key )));
58+ }
59+ }
60+ return nextProps ;
61+ }
62+
2863 public StreamsRegistry (Properties props ) {
2964 IFn require = Clojure .var ("clojure.core" , "require" );
3065 require .invoke (Clojure .read ("io.operatr.kpow.agent" ));
@@ -33,7 +68,8 @@ public StreamsRegistry(Properties props) {
3368 IFn serdesFn = Clojure .var ("io.operatr.kpow.serdes" , "transit-json-serializer" );
3469 Serializer keySerializer = (Serializer ) serdesFn .invoke ();
3570 Serializer valSerializer = (Serializer ) serdesFn .invoke ();
36- KafkaProducer producer = new KafkaProducer <>(props , keySerializer , valSerializer );
71+ Properties producerProps = filterProperties (props );
72+ KafkaProducer producer = new KafkaProducer <>(producerProps , keySerializer , valSerializer );
3773 agent = agentFn .invoke (producer );
3874 }
3975
0 commit comments