code: public static StringProducers buildGlobal(String zookeeperConfig) {
          if (instance == null) {
              synchronized (StringProducers.class) {
                  if (instance == null) {
                      final Properties props = new Properties();
                      props.put("zk.connect", zookeeperConfig);
                      props.put("serializer.class", StringEncoder.class.getName());
                      //
                      final String JAFKA_PREFIX = "jafka.";
                      for (Map.Entry<Object, Object> e : System.getProperties().entrySet()) {
                          String name = (String) e.getKey();
                          if (name.startsWith(JAFKA_PREFIX)) {
                              props.put(name.substring(JAFKA_PREFIX.length()), (String) e.getValue());
                          }
                      }
                      instance = new StringProducers(props, true);
                  }
              }
          }
          return instance;
      }
docs: build the global producer (thread-safety)
  
  @param zookeeperConfig connect config of zookeeper; ex: 127.0.0.1:2181/jafka
  @return the global producer