package forklift.integration.server; import io.confluent.kafka.schemaregistry.rest.SchemaRegistryConfig; import io.confluent.kafka.schemaregistry.rest.SchemaRegistryRestApplication; import org.eclipse.jetty.server.Server; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Properties; /** * Embedded SchemaRegistry server */ public class SchemaRegistryService implements Runnable { private static final Logger log = LoggerFactory.getLogger(SchemaRegistryService.class); private Server server; private final int localZookeeperPort; private final int listenPort; public SchemaRegistryService(int localZookeeperPort, int listenPort) { this.localZookeeperPort = localZookeeperPort; this.listenPort = listenPort; } public void stop() throws Exception { server.stop(); Thread.sleep(1500); } @Override public void run() { Properties properties = new Properties(); properties.setProperty("listeners", "http://localhost:" + listenPort); properties.setProperty("kafkastore.connection.url", "localhost:" + localZookeeperPort); properties.setProperty("host.name", "localhost"); properties.setProperty("avro.compatibility.level", "full"); try { SchemaRegistryConfig config = new SchemaRegistryConfig(properties); SchemaRegistryRestApplication app = new SchemaRegistryRestApplication(config); server = app.createServer(); server.start(); server.join(); } catch (Exception e) { log.error("Unable to start Schema Registry", e); } } }