@Override public void close() { if (receiver != null) { try { receiver.close().whenComplete((voidargs, error) -> { try { if (error != null) { logger.error("Exception during receiver close phase" + error.toString()); } ehClient.closeSync(); } catch (Exception e) { logger.error("Exception during ehclient close phase" + e.toString()); } }).get(); } catch (InterruptedException e) { logger.error("Exception occured during close phase" + e.toString()); } catch (ExecutionException e) { logger.error("Exception occured during close phase" + e.toString()); } logger.info("closed eventhub receiver: partitionId=" + partitionId); receiver = null; ehClient = null; } }
@Override public void cleanup() { if (sender != null) { try { sender.close().whenComplete((voidargs, error) -> { try { if (error != null) { logger.error("Exception during sender cleanup phase" + error.toString()); } ehClient.closeSync(); } catch (Exception e) { logger.error("Exception during ehclient cleanup phase" + e.toString()); } }).get(); } catch (InterruptedException e) { logger.error("Exception occured during cleanup phase" + e.toString()); } catch (ExecutionException e) { logger.error("Exception occured during cleanup phase" + e.toString()); } logger.info("Eventhub Bolt cleaned up"); sender = null; ehClient = null; } }
@OnStopped public void tearDown() throws ProcessException { for (final PartitionReceiver receiver : partitionToReceiverMap.values()) { if (null != receiver) { receiver.close(); } } partitionToReceiverMap.clear(); try { if (null != eventHubClient) { eventHubClient.closeSync(); } } catch (final ServiceBusException e) { throw new ProcessException(e); } }
@Override public void close(long timeoutMS) { try { if (timeoutMS == EventHubClientManager.BLOCK_UNTIL_CLOSE) { eventHubClient.closeSync(); eventHubClientExecutor.shutdown(); } else { CompletableFuture<Void> future = eventHubClient.close(); future.get(timeoutMS, TimeUnit.MILLISECONDS); } } catch (Exception e) { LOG.error("Closing the EventHub client failed", e); } }
@Test public void doAzureEventSourceSendTest() throws Exception { ExecutorService executor = Executors.newSingleThreadExecutor(); final ConnectionStringBuilder connStr = new ConnectionStringBuilder().setNamespaceName("sitewhere") .setEventHubName("events").setSasKeyName("RootManageSharedAccessKey").setSasKey("xxx"); byte[] payloadBytes = EventsHelper.generateJsonMeasurementsMessage(DEVICE_TOKEN); EventData sendEvent = EventData.create(payloadBytes); final EventHubClient ehClient = EventHubClient.createSync(connStr.toString(), executor); ehClient.sendSync(sendEvent); ehClient.closeSync(); executor.shutdown(); }