public void createTopic(List<String> topics) { client.push(ProxyMessageBuilder.create(new TopicsPayload(topics))).join(); }
@Override public void send(String to, Response response) { ProxyMessage responseMessage = ProxyMessageBuilder.notification(new NotificationCreatePayload(to, gson.toJson(response))); proxyClient.push(responseMessage); } }
public static void main(String[] args) { ProxyClient client = new WebSocketKafkaProxyClient((message, proxyClient) -> System.out.println("Received message: " + message)); client.start(); CompletableFuture<ProxyMessage> healthFuture = client.push(ProxyMessageBuilder.health()); System.out.println("Topic health: " + healthFuture.join()); CompletableFuture<ProxyMessage> subscribeFuture = client.push(ProxyMessageBuilder.subscribe(new SubscribePayload("kafka-ws-topic"))); System.out.println("Topic subscribe: " + subscribeFuture.join()); try { Thread.sleep(20000); } catch (InterruptedException e) { e.printStackTrace(); } finally { client.shutdown(); } } }
@Bean public Executor executionPool(NotificationHandler notificationHandler, WebSocketKafkaProxyConfig proxyConfig) { Executor executionPool = Executors.newFixedThreadPool(proxyConfig.getWorkerThreads()); for (int i = 0; i < proxyConfig.getWorkerThreads(); i++) { executionPool.execute(() -> { WebSocketKafkaProxyClient client = new WebSocketKafkaProxyClient(notificationHandler); client.setWebSocketKafkaProxyConfig(proxyConfig); client.start(); client.push(ProxyMessageBuilder.create(new TopicsPayload(REQUEST_TOPIC))).join(); client.push(ProxyMessageBuilder.subscribe(new SubscribePayload(REQUEST_TOPIC, proxyConfig.getConsumerGroup()))).join(); }); } return executionPool; }
public void subscribeToTopic(String topic) { client.push(ProxyMessageBuilder.subscribe(new SubscribePayload(topic))).join(); }
@Override public void start() { client.start(); client.push(ProxyMessageBuilder.create(new TopicsPayload(Arrays.asList(requestTopic, replyToTopic)))).join(); UUID uuid = UUID.randomUUID(); Executor executionPool = Executors.newFixedThreadPool(proxyConfig.getWorkerThreads()); for (int i = 0; i < proxyConfig.getWorkerThreads(); i++) { executionPool.execute(() -> { WebSocketKafkaProxyClient client = new WebSocketKafkaProxyClient(notificationHandler); client.setWebSocketKafkaProxyConfig(proxyConfig); client.start(); client.push(ProxyMessageBuilder.subscribe(new SubscribePayload(replyToTopic, uuid.toString()))).join(); }); } pingServer(); }
public void subscribeToTopic(String topic) { client.push(ProxyMessageBuilder.subscribe(new SubscribePayload(topic))).join(); }
@Override public void push(Request request) { if (request.getBody() == null) { throw new NullPointerException("Request body must not be null."); } request.setReplyTo(replyToTopic); client.push(ProxyMessageBuilder.notification(new NotificationCreatePayload(requestTopic, gson.toJson(request)))); // toDo: use request partition key }
public DistributedProxyFilterRegistry(Gson gson, WebSocketKafkaProxyConfig proxyConfig) { this.gson = gson; this.proxyClient = new WebSocketKafkaProxyClient((message, proxyClient) -> handleSubscriptionMessage(message, gson)); proxyClient.setWebSocketKafkaProxyConfig(proxyConfig); proxyClient.start(); proxyClient.push(ProxyMessageBuilder.subscribe(new SubscribePayload(SUBSCRIPTION_TOPIC, "fr-" + UUID.randomUUID()))).thenAccept(message -> { if (message.getStatus() == null || message.getStatus() != 0) { MessagePayload payload = (MessagePayload) message.getPayload(); throw new HiveException("Response message is failed: " + payload.getMessage()); } }); }
public void createTopic(List<String> topics) { client.push(ProxyMessageBuilder.create(new TopicsPayload(topics))).join(); }
@Override public void push(Request request) { if (request.getBody() == null) { throw new NullPointerException("Request body must not be null."); } request.setReplyTo(replyToTopic); client.push(ProxyMessageBuilder.notification(new NotificationCreatePayload(requestTopic, gson.toJson(request)))); // toDo: use request partition key }
@Override public void push(Request request) { if (request.getBody() == null) { throw new NullPointerException("Request body must not be null."); } request.setReplyTo(replyToTopic); client.push(ProxyMessageBuilder.notification( new NotificationCreatePayload(requestTopic, gson.toJson(request), request.getPartitionKey()))); }
@Override public void onEvent(ServerEvent serverEvent) throws Exception { final Request request = serverEvent.get(); if (request.getBody() == null) { throw new NullPointerException("Request body must not be null."); } request.setReplyTo(replyToTopic); proxyClient.push(ProxyMessageBuilder.notification( new NotificationCreatePayload(requestTopic, gson.toJson(request), request.getPartitionKey()))); } }
@Override public void register(Filter filter, Subscriber subscriber) { processRegister(filter, subscriber); String subscribeMessage = gson.toJson(new SubscribeMessage(REGISTER, filter, subscriber)); proxyClient.push(ProxyMessageBuilder.notification( new NotificationCreatePayload(SUBSCRIPTION_TOPIC, subscribeMessage))).thenAccept(message -> { if (message.getStatus() == null || message.getStatus() != 0) { MessagePayload payload = (MessagePayload) message.getPayload(); throw new HiveException("Response message is failed: " + payload.getMessage()); } }); }
@Override public void unregister(Subscriber subscriber) { processUnregister(subscriber); String subscribeMessage = gson.toJson(new SubscribeMessage(UNREGISTER, subscriber)); proxyClient.push(ProxyMessageBuilder.notification( new NotificationCreatePayload(SUBSCRIPTION_TOPIC, subscribeMessage))).thenAccept(message -> { if (message.getStatus() == null || message.getStatus() != 0) { MessagePayload payload = (MessagePayload) message.getPayload(); throw new HiveException("Response message is failed: " + payload.getMessage()); } }); } }
logger.debug("Request callback added for request: {}, correlationId: {}", request.getBody(), request.getCorrelationId()); client.push(ProxyMessageBuilder.notification(new NotificationCreatePayload(requestTopic, gson.toJson(request)))); // toDo: use request partition key
logger.debug("Request callback added for request: {}, correlationId: {}", request.getBody(), request.getCorrelationId()); client.push(ProxyMessageBuilder.notification(new NotificationCreatePayload(requestTopic, gson.toJson(request)))); // toDo: use request partition key
logger.debug("Request callback added for request: {}, correlationId: {}", request.getBody(), request.getCorrelationId()); client.push(ProxyMessageBuilder.notification( new NotificationCreatePayload(requestTopic, gson.toJson(request), request.getPartitionKey())));
@Override public void onEvent(ServerEvent serverEvent) throws Exception { final Request request = serverEvent.get(); final String replyTo = request.getReplyTo(); Response response; switch (request.getType()) { case clientRequest: logger.debug("Client request received {}", request); response = handleClientRequest(request); break; case ping: logger.info("Ping request received from {}", replyTo); response = Response.newBuilder().buildSuccess(); break; default: logger.warn("Unknown type of request received {} from client with topic {}, correlationId = {}", request.getType(), replyTo, request.getCorrelationId()); response = Response.newBuilder() .buildFailed(404); } // set correlationId explicitly to prevent missing it in request response.setCorrelationId(request.getCorrelationId()); ProxyMessage responseMessage = ProxyMessageBuilder.notification(new NotificationCreatePayload(replyTo, gson.toJson(response))); proxyClient.push(responseMessage); }