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

问题描述 投票:0回答:1

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

这里的问题是类是嵌套的,我不知道如何调整数据的形状以能够成功发送。

这是我正在尝试的代码

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'对象没有属性'append'我认为根据类型,类对消息的编码方式有所不同。我不想以串行字符串发送单个消息,而是以并行方式发送消息,并接收如下消息:

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

对于第二种方法,我不确定是否可以工作,因为我只使用一个分区,并且在收到它们但我不希望这样做时,可能混合了三个事件数据A,B,C。

message-queue azure-eventhub
1个回答
0
投票

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

而且您还应该注意,即使它发送了一个字符串列表,当接收到该列表时,它也会将列表的所有元素连接起来组成一条消息。例如,如果存在要发送的列表[“ a”,“ b”,“ c”,“ d”],则在接收到该列表时,会将其显示为整个字符串。

我已经亲自测试过,以上信息正确。

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

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.