Azure eventhub 在 python 中发送多个浮点数组消息

Azure eventhub sending several float array messages in python

我有三个浮点数据数组 (A、B、C),我想将其发送到事件中心。

这里的问题是 classes 是嵌套的,我不知道如何调整数据才能成功发送。

这是我正在尝试的代码

logger = logging.getLogger("azure")


ADDRESS = ""
USER = ""
KEY = ""


try:
    if not ADDRESS:
        raise ValueError("No EventHubs URL supplied.")

    # Create Event Hubs client
    client = EventHubClient(ADDRESS, debug=False, username=USER, password=KEY)
    sender = client.add_sender(partition="0")
    client.run()

    x_value = np.arange(100)
    try:
        start_time = time.time()
        for i in range(100000):
            A = np.asarray([1,2,3,4])
            B = np.asarray([2,3,4,5])
            C = np.asarray([3,4,5,6])
            message = [A, B, C]
            sender.send(EventData(body = message))
            time.sleep(1)
    except:
        raise
    finally:
        end_time = time.time()
        client.stop()
        run_time = end_time - start_time
        logger.info("Runtime: {} seconds".format(run_time))

except KeyboardInterrupt:
    pass

这样,我看到错误 'ValueBody' object has no attribute 'append' 我认为按类型,class 对消息进行不同的编码。 我不想用串行字符串发送单个消息,而是想以并行方式发送消息,并像这样接收它们:

  1. 接收一个事件数据,列表形式为[A,B,C]
  2. 分别接收三个事件数据A、B、C,就像调用三个不同的对象基础。

对于第二种方式,我不确定它是否可行,因为我只使用一个分区,当我收到它们时可能混合了三个事件数据 A、B、C,但我不希望这样。

我已与ms支持确认,反馈是:它只适用于字符串或字节列表,但不适用于int列表。

而且你还应该注意,即使它发送一个字符串列表,当收到列表时,它会连接列表的所有元素以组成一条消息。例如,如果有一个列表 ["a","b","c","d"] 发送,当收到它时,它会显示此 "abcd" 为一整串。

本人亲测,以上信息正确

因此对于您的情况,您应该考虑将列表更改为字符串或 json 字符串。接收时,可以根据需要格式化数据。

希望对您有所帮助。