2015-10-06 101 views
1

Iam是Microsoft事件中心的初学者。我正在使用node js consumer从eventHub成功读取样本字符串数据。但我需要消费八位字节流数据。这是我的代码使用node.js从azure eventhub消耗八位字节流数据

var messageHandler = function (myIdx, msg) { 
console.log("############# Inside Message Handler #######"); 
console.log(msg.body); 
} 

我没有得到正确的数据。 但我成功从txt文件中读取数据。这是我的代码

fs.readFile('/home/test/19_6.txt', function (err, data) { 
console.log(data); 
} 

我该怎么办?任何想法 ????

这是我的八位字节流数据Click here to view

+0

你在MS EventHub中做什么?什么是八位字节流数据,文件或其他? –

+0

当我从一个文件读取数据被视为对象或字节数组。从事件中心接收的相同数据是String(message.body)。我想知道如何解释来自事件集线器的数据,就像从文件中读取数据一样。 –

回答

2

按我的经验,你可以读取文件的字节数组,并使用Base64编码将其转换为一个字符串,然后发送Base64编码字符串EventHub。当您收到数据时,您可以将Base64字符串解码为一个字节数组。

但我不推荐这种方式,因为EventHub有一些限制。

首先,事件中心事件的最大大小为256KB。超过此限额的邮件将被拒绝,并且调用代码将收到一个异常。请参考https://azure.microsoft.com/en-us/documentation/articles/service-bus-quotas/

enter image description here

其次,你需要使用一些C#的API,例如事件处理器主机API从事件集线器接收消息。请参阅https://azure.microsoft.com/en-us/documentation/articles/event-hubs-programming-guide/#event-consumers。如果你想使用NodeJS来完成它,虽然事件中心/服务总线支持AMQP协议,但是很难。

所以我认为你想知道如何发送文件到一个队列,并接收他们做一些过程。我建议您使用Azure存储队列来实现您的想法。

关于使用来自NodeJS的存储队列,请参考https://azure.microsoft.com/en-us/documentation/articles/storage-nodejs-how-to-use-queues/http://azure.github.io/azure-storage-node/#toc7

相关问题