protected DiscoveryRegistrar(Vertx vertx) { super(vertx); this.eventManager = new SchemaMessageConsumers(vertx); }
public void registerConsumer(String address, SchemaUsageHandler usageHandler) { registerConsumer(address, createUsageHandler(usageHandler)); }
public void registerConsumer(String address, SchemaAnnounceHandler announceHandler) { registerConsumer(address, createAnnounceHandler(announceHandler)); }
@Test public void should_Manage_Service_Consumers() { SchemaDefinition definition = SchemaDefinition .createInstance(droidsSchema, SchemaMetadata.create()); messageConsumers.registerServiceConsumer("DroidQueries", definition); assertEquals(1, messageConsumers.getConsumers().size()); assertTrue(messageConsumers.getConsumers().get("DroidQueries").isRegistered()); messageConsumers.registerServiceConsumer("DroidQueries", definition); assertEquals(1, messageConsumers.getConsumers().size()); messageConsumers.unregisterConsumer("DroidQueries"); assertEquals(1, messageConsumers.getConsumers().size()); messageConsumers.registerConsumer("announce", (SchemaAnnounceHandler) rh -> {}); assertEquals(2, messageConsumers.getConsumers().size()); messageConsumers.unregisterConsumer("DroidQueries"); assertEquals(1, messageConsumers.getConsumers().size()); messageConsumers.close(); assertEquals(0, messageConsumers.getConsumers().size()); }
@Test public void should_Cleanup_When_Closing() { messageConsumers.registerConsumer("announce", (SchemaAnnounceHandler) rh -> {}); messageConsumers.registerConsumer("announce", (SchemaAnnounceHandler) rh -> {}); messageConsumers.registerConsumer("announce1", (SchemaAnnounceHandler) rh -> {}); messageConsumers.registerConsumer("announce1", (SchemaAnnounceHandler) rh -> {}); messageConsumers.registerConsumer("usage", (SchemaUsageHandler) rh -> {}); messageConsumers.registerConsumer("usage1", (SchemaUsageHandler) rh -> {}); messageConsumers.registerConsumer("announce", (SchemaUsageHandler) rh -> {}); assertEquals(4, messageConsumers.getConsumers().size()); messageConsumers.close(); assertEquals(0, messageConsumers.getConsumers().size()); } }
@Test public void should_Manage_Consumers_Without_Registering_Duplicates() { messageConsumers.registerConsumer("announce", (SchemaAnnounceHandler) rh -> {}); assertEquals(1, messageConsumers.getConsumers().size()); assertTrue(messageConsumers.getConsumers().get("announce").isRegistered()); messageConsumers.registerConsumer("usage", (SchemaUsageHandler) rh -> {}); assertEquals(2, messageConsumers.getConsumers().size()); assertTrue(messageConsumers.getConsumers().get("usage").isRegistered()); messageConsumers.registerConsumer("usage", (SchemaUsageHandler) rh -> {}); assertEquals(2, messageConsumers.getConsumers().size()); assertTrue(messageConsumers.getConsumers().get("usage").isRegistered()); messageConsumers.unregisterConsumer("usage"); assertEquals(2, messageConsumers.getConsumers().size()); assertTrue(messageConsumers.getConsumers().get("usage").isRegistered()); messageConsumers.unregisterConsumer("usage"); assertEquals(1, messageConsumers.getConsumers().size()); messageConsumers.unregisterConsumer("usage"); assertEquals(1, messageConsumers.getConsumers().size()); assertTrue(messageConsumers.getConsumers().get("announce").isRegistered()); messageConsumers.unregisterConsumer("announce"); assertEquals(0, messageConsumers.getConsumers().size()); }
/** * Registers the provided event handlers to the `announce` and `usage` events of the service discovery * specified in the service discovery options. * * @param options the service discovery options * @param announceHandler the handler for `announce` events * @param usageHandler the handler for `usage` events * @return the discovery registration */ protected DiscoveryRegistration startListening( ServiceDiscoveryOptions options, SchemaAnnounceHandler announceHandler, SchemaUsageHandler usageHandler) { ServiceDiscovery discovery = getOrCreateDiscovery(options, () -> { stopListening(options); return null; }); eventManager.registerConsumer(options.getAnnounceAddress(), announceHandler); eventManager.registerConsumer(options.getUsageAddress(), usageHandler); return register(options.getName(), DiscoveryRegistration.create(discovery, options)); }
private void doClose(Handler<AsyncResult<Void>> closeHandler) { super.close(); consumerManager.close(); closeHandler.handle(Future.succeededFuture()); } }
/** * Stops listening to service discovery events if they are no longer in use, then closes the service discovery. * * @param options the service discovery options */ protected void stopListening(ServiceDiscoveryOptions options) { eventManager.unregisterConsumer(options.getAnnounceAddress()); eventManager.unregisterConsumer(options.getUsageAddress()); closeServiceDiscovery(options.getName()); }
private MessageConsumer<JsonObject> registerSchemaServiceConsumer(Record record, SchemaDefinition definition) { String address = record.getLocation().getString(Record.ENDPOINT); return consumerManager.registerServiceConsumer(address, definition); }
private void registerSchemaEventConsumers( ServiceDiscoveryOptions options, SchemaPublishedHandler<SchemaRegistration> publishedHandler, SchemaUnpublishedHandler<SchemaRegistration> unpublishedHandler) { SchemaAnnounceHandler announceHandler = record -> findRegistration(options.getName(), record.getName()).ifPresent(reg -> { if (Status.UP.equals(record.getStatus())) { publishedHandler.schemaPublished(reg); } else { unpublishedHandler.schemaUnpublished(reg); } }); consumerManager.registerConsumer(options.getAnnounceAddress(), announceHandler); }
protected SchemaRegistrar(Vertx vertx, String publisherId) { super(vertx); this.publisherId = publisherId == null ? UUID.randomUUID().toString() : publisherId; this.consumerManager = new SchemaMessageConsumers(vertx); }
/** * Closes the registrar and release all its resources. */ @Override protected void close() { registrations().stream() .map(AbstractRegistration::getDiscoveryOptions) .forEach(this::stopListening); eventManager.close(); super.close(); } }
/** * Unregisters the published schema indicated by the provided registration. * * @param registration the schema registration */ @Override protected void unregister(SchemaRegistration registration) { consumerManager.unregisterConsumer(registration.getRecord().getLocation().getString(Record.ENDPOINT)); super.unregister(registration); }
@Before public void setUp() { vertx = Vertx.vertx(); messageConsumers = new SchemaMessageConsumers(vertx); }
@After public void tearDown() { messageConsumers.close(); vertx.close(); }