此问题与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和可用选项?
答案 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