/** * Copyright 2016-2017 Sixt GmbH & Co. Autovermietung KG * Licensed under the Apache License, Version 2.0 (the "License"); you may * not use this file except in compliance with the License. You may obtain a * copy of the License at http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. */ package com.sixt.service.framework.kafka; import com.google.inject.Inject; import com.google.inject.Singleton; import com.sixt.service.framework.ServiceProperties; import java.util.Collection; import java.util.concurrent.ConcurrentLinkedQueue; @Singleton public class KafkaSubscriberFactory<TYPE> { protected ServiceProperties serviceProperties; protected Collection<KafkaSubscriber<TYPE>> kafkaSubscribers = new ConcurrentLinkedQueue<>(); @Inject public KafkaSubscriberFactory(ServiceProperties serviceProperties) { this.serviceProperties = serviceProperties; } @Deprecated //no longer needed now that we get populated serviceProperties at guice bootstrap-time public void initialize() { String servers = serviceProperties.getKafkaServer(); for (KafkaSubscriber subscriber : kafkaSubscribers) { subscriber.initialize(servers); } } @SuppressWarnings(value = "unchecked") public KafkaSubscriberBuilder newBuilder(String topic, EventReceivedCallback<TYPE> callback) { return new KafkaSubscriberBuilder(this, topic, callback); } public void builtSubscriber(KafkaSubscriber<TYPE> subscriber) { kafkaSubscribers.add(subscriber); subscriber.initialize(serviceProperties.getKafkaServer()); } }