From 0167dcde2ad753ed38fdbcf8c62911f506947547 Mon Sep 17 00:00:00 2001 From: "R. Tyler Croy" Date: Wed, 2 Sep 2015 07:38:44 -0700 Subject: [PATCH] Display the messages partition and offset when rendering a message Fixes #22 --- src/main/groovy/offtopic/KafkaSubscriber.groovy | 13 +++++++------ src/main/groovy/offtopic/OfftopicClient.groovy | 2 +- src/ratpack/public/css/offtopic.css | 5 +++++ src/ratpack/public/js/ws.js | 3 ++- 4 files changed, 15 insertions(+), 8 deletions(-) diff --git a/src/main/groovy/offtopic/KafkaSubscriber.groovy b/src/main/groovy/offtopic/KafkaSubscriber.groovy index b0f3fb5..6fc7107 100644 --- a/src/main/groovy/offtopic/KafkaSubscriber.groovy +++ b/src/main/groovy/offtopic/KafkaSubscriber.groovy @@ -1,9 +1,8 @@ package offtopic -import kafka.consumer.ConsumerConfig; -import kafka.consumer.KafkaStream; -import kafka.javaapi.consumer.ConsumerConnector; -import offtopic.curator.CuratorPool +import kafka.consumer.ConsumerConfig +import kafka.javaapi.consumer.ConsumerConnector +import kafka.message.MessageAndMetadata import groovy.util.logging.Slf4j /** @@ -51,9 +50,11 @@ class KafkaSubscriber { consumerMap.get(this.topic).each { stream -> def iterator = stream.iterator() while (iterator.hasNext()) { - def message = iterator.next() - def data = ['raw' : new String(message.message()), + MessageAndMetadata message = iterator.next() + Map data = ['raw' : new String(message.message()), 'b64' : message.message().encodeBase64().toString(), + 'offset' : message.offset, + 'partition' : message.partition, 'topic' : message.topic(), 'tstamp' : System.currentTimeMillis()] this.callback.call(data) diff --git a/src/main/groovy/offtopic/OfftopicClient.groovy b/src/main/groovy/offtopic/OfftopicClient.groovy index f2b6d55..2766263 100644 --- a/src/main/groovy/offtopic/OfftopicClient.groovy +++ b/src/main/groovy/offtopic/OfftopicClient.groovy @@ -31,7 +31,7 @@ class OfftopicClient { return } - KafkaSubscriber subscriber = new KafkaSubscriber(Configuration.instance.zookeepers, + KafkaSubscriber subscriber = new KafkaSubscriber(System.getProperty('zookeepers') ?: Configuration.instance.zookeepers, topic, "offtopic-${clientId}") subscriber.callback = this.messageCallback diff --git a/src/ratpack/public/css/offtopic.css b/src/ratpack/public/css/offtopic.css index a2e2910..8a82872 100644 --- a/src/ratpack/public/css/offtopic.css +++ b/src/ratpack/public/css/offtopic.css @@ -17,3 +17,8 @@ body { .message-raw { } + +.offset { + font-family: monospace; + font-size: 0.7em; +} diff --git a/src/ratpack/public/js/ws.js b/src/ratpack/public/js/ws.js index 073999f..d899502 100644 --- a/src/ratpack/public/js/ws.js +++ b/src/ratpack/public/js/ws.js @@ -16,7 +16,8 @@ function watchTopic(name) { var messages = $('#messages'); var el_id = Math.floor(Math.random() * 1000000); var el = ["
", - "" + data.topic + "", + "" + data.topic + ":" + data.partition + "", + "(offset: " + data.offset + ")", '
' + data.raw + '
', "
" + data.b64 + "
"].join("\n");