阅读与反应的kafka话题

如果这个问题看起来很普通,我会开始说我很抱歉,但是我很难解决这个问题。 所以我会在这里给你一个机会。

我想用反应build立一个kafka话题的消费者,所以它会渲染,我不知道我的话题中有一个新的消息。

我已经有了消费者的代码:

var kafka = require('kafka-node'), Consumer = kafka.Consumer, client = new kafka.Client(), consumer = new Consumer( client, [ { topic: 'logs', partition: 0 } ], { autoCommit: false } ), Producer = kafka.Producer, client = new kafka.Client(), producer = new Producer(client); consumer.on('message', function (message) { console.log(message); }); 

任何时候都有一个新的消息,消费者的事件将会被调用。

但是我看不出有什么办法来反应。

我为任何东西,教程,文章,任何东西。

谢谢。

       

网上收集的解决方案 "阅读与反应的kafka话题"

这是你可以做的一个例子。 实质上,具有呈现消息信息的组件观察到consumer并将该消息设置在组件的状态中。 然后,组件将随新状态呈现(任何时候setState被调用,导致组件自我更新)。

这假设你想要显示一个消息列表,并且consumer.oncallback提供了一个需要添加到列表中的消息。

 var MessageDetails = React.createClass({ //create a render function for this to render the details about a message }); var MessageDisplay = React.createClass({ getInitialState: function() { return { messages: [] }; }, onComponentDidMount: function() { consumer.on('message', function (message) { // This updates the state so component will re-render var messageList = this.state.messages; messageList.push(message); this.setState({messages: messageList}); }.bind(this)); }, onComponentWillUnmount: function() { // Unsubscribe from the consume here. }, render: function() { var messageList = this.state.messages.map(function(message) { return (<MessageDetails id={message.id} etc. />); }); return ( <div className="commentBox"> {messageList} </div> ); } });