Ejemplo n.º 1
0
  /**
   * @param endpoint
   * @throws ClassNotFoundException
   */
  public KafkaProducer(final KafkaEndpoint endpoint) throws ClassNotFoundException {
    super(endpoint);
    this.endpoint = endpoint;
    final Properties props = new Properties();
    props.put("zk.connect", endpoint.getZkConnect());
    if (!"".equals(endpoint.getSerializerClass())) {
      props.put("serializer.class", endpoint.getSerializerClass());
    }
    if (!"".equals(endpoint.getPartitionerClass())) {
      props.put("partitioner.class", endpoint.getPartitionerClass());
    }
    props.put("producer.type", endpoint.getProducerType());
    props.put("broker.list", endpoint.getBrokerList());
    props.put("buffer.size", endpoint.getBufferSize());
    props.put("connect.timeout.ms", endpoint.getConnectTimeoutMs());
    props.put("socket.timeout.ms", endpoint.getSocketTimeoutMs());
    props.put("reconnect.interval", endpoint.getReconnectInterval());
    props.put("max.message.size", endpoint.getMaxMessageSize());
    props.put("compression.codec", endpoint.getCompressionCodec());
    props.put("compressed.topics", endpoint.getCompressedTopics());
    props.put("zk.read.num.retries", endpoint.getZkReadNumRetries());
    // producer.type=async
    if ("async".equals(endpoint.getProducerType())) {
      props.put("queue.time", endpoint.getQueueTime());
      props.put("queue.size", endpoint.getQueueSize());
      props.put("batch.size", endpoint.getBatchSize());
      if (!"".equals(endpoint.getEventHandler())) {
        props.put("event.handler", endpoint.getEventHandler());
      }
      props.put("event.handler.props", endpoint.getEventHandlerProps());
      if (!"".equals(endpoint.getCallbackHandler())) {
        props.put("callback.handler", endpoint.getCallbackHandler());
      }
      props.put("callback.handler.props", endpoint.getCallbackHandlerProps());
    }

    final ProducerConfig config = new ProducerConfig(props);
    if (LOG.isInfoEnabled()) {
      LOG.info("Kafka producer Component initialized");
    }
    producer = new kafka.javaapi.producer.Producer<String, Message>(config);
  }