如何设置一个长期的民意调查'在NodeJS中使用Bluemix Message Hub

时间:2017-06-07 14:50:28

标签: node.js ibm-cloud message-hub

此问题与why do I need to poll message hub有关,与该答案相关的文档显示,Kafka将支持长期民意调查'概念,但现有的nodejs没有明确的方法支持message-hub实现这样的机制。为nodejs提供的演示应用程序只使用250毫秒的计时器间隔来处理从服务器检索消息。我想使用Kafka支持长轮询方法用更复杂的长轮询方法替换它: To avoid this we have parameters in our pull request that allow the consumer request to block in a "long poll" waiting until data arrives 然而,现有的实现似乎不允许配置任何这样的参数,也不清楚必要的参数是什么。 get函数的原型定义为:

MessageHub.ConsumerInstance.prototype.get(topicName [toValue])

Retrieves a message from the provided topic name.

    topicName - (String) (required), the topic to retrieve messages from.
    toValue - (Boolean) (optional), unwraps base64 encoded messages, if true. Defaults to true.

Returns a Promise object which will be fulfilled when the request to the service resolves.

所以没有配置选项。或者,您是否可以提供链接文档,该文档定义了在message-hub.js模块中实现的URL的URL和可用选项?

1 个答案:

答案 0 :(得分:1)

你提到的是一个基于Message Hub提供的REST API构建的npm模块 -  这基本上是Confluent REST Proxy API减去AVRO支持 http://docs.confluent.io/2.0.1/kafka-rest/docs/api.html

那个npm并没有为你提供完整的Kafka api。它只提供REST API的一个子集

Kafka doc引用的长轮询是Java Consumer调查中的超时 https://kafka.apache.org/0102/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html#poll(long)

Node.js的一个好客户端是 https://github.com/Blizzard/node-rdkafka

请参阅我们的编码样本 https://github.com/ibm-messaging/message-hub-samples