/** * 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 KafkaPublisherFactory { protected ServiceProperties serviceProperties; protected Collection<KafkaPublisher> kafkaPublishers = new ConcurrentLinkedQueue<>(); @Inject public KafkaPublisherFactory(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 (KafkaPublisher publisher : kafkaPublishers) { publisher.initialize(servers); } } public KafkaPublisherBuilder newBuilder(String topic) { return new KafkaPublisherBuilder(this, topic); } public void builtPublisher(KafkaPublisher publisher) { kafkaPublishers.add(publisher); publisher.initialize(serviceProperties.getKafkaServer()); } }