在Azure事件中心中,将事件从一个事件中心复制到另一个事件中心的最简单方法是什么?



我想复制事件,包括他们的头数据不变到另一个事件中心。

我试过了:

  • 一个带有事件中心触发器和事件中心输出的Azure函数。该函数是在c#中实现的,因为这是我发现的唯一可以访问头文件的运行时。我在这里看到的问题是,当标头的类型为byte[]时,函数在输出端失败,并显示无法序列化它们的消息。消息通过Kafka写入源事件中心,这意味着所有的头将是byte[]类型。
  • 一个简单的Spring Cloud Stream应用程序部署到我们的OpenShift集群。这是可行的,但意味着当我们想要一个无服务器解决方案时,需要进行额外的部署。

有更简单的方法吗?

Azure Functions有一组事件复制任务,旨在完成转换工作,并使事件转发到第二个事件中心变得容易。

也就是说,我不知道它是否支持在这样做时维护分区键—您需要进行测试以确定。如果没有,则需要操作底层AMQP消息来附加它。

为此,您将在目标EventData实例上调用GetRawAmqpMessage。在返回的AmqpAnnotatedMessage上,您可以手动将分区键注入Message Annotations部分,方法是添加一个带有键x-opt-partition-key的项和您希望它反映的分区键值。

如果复制任务由于某种原因不能满足您的需求,最好的方法可能是使用本答案中讨论的方法手动发布事件。

相关内容