从客户端

时间:2017-11-01 06:00:44

标签: javascript websocket apache-kafka stomp sockjs

一旦服务器端的Producer将消息推送到特定的kafka主题,我们就会尝试使用浏览器中的js代码来听kafka主题。

在服务器端,kafka服务器和zookeeper分别在9092和2181端口运行。

String topicName = "test"; 
Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");     
props.put("acks", "all");
props.put("retries", 0);
props.put("batch.size", 16384);
props.put("linger.ms", 1);
props.put("buffer.memory", 33554432);
props.put("key.serializer", 
     "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", 
             "org.apache.kafka.common.serialization.StringSerializer");
props.put("partitioner.class",
        "org.apache.kafka.clients.producer.internals.DefaultPartitioner");
Thread.currentThread().setContextClassLoader(null);
Producer<String, String> producer = new KafkaProducer <String, String>(props);
for(int i = 0; i < 10; i++){
    producer.send(new ProducerRecord<String, String>(topicName, 
       Integer.toString(i), Integer.toString(i) + i));
    }
producer.close();
}catch(Exception e){
    e.printStackTrace();
}

客户端代码段:

<!DOCTYPE html>
<html>
<head>My Page</head>
<script src="stomp.js"></script>
<script src="http://cdn.sockjs.org/sockjs-0.3.min.js"></script>
<script type="text/javascript">
console.log('Starting: ');
var socket = new SockJS('ws://localhost:9092');
client = Stomp.over(socket);
client.connect( "", "",
        function() {
            console.log('Connected: ');
            client.subscribe("/topic/test",
                function( message ) {
                    alert( message );
                }  
            );
        }
);
</script>
</html>

从客户端来看,当我们尝试通过ws连接时,只有Starting:控制台被打印并且已连接:因为没有得到rpinted 与kafka服务器的websocket连接没有成功。

由于Kafka不直接支持STOMP,我们试图起诉SockJS。

任何人都可以帮助我们实现此功能。

0 个答案:

没有答案