使用API管理中的日志到事件中心策略发送消息时,是否可以确保消息已成功传递到事件中心?
编辑:在我们的解决方案中,如果没有将消息传递到事件中心,我们将不允许任何请求继续进行。据我所知,log-to-eventhub策略不会对此进行检查。
答案 0 :(得分:0)
欢迎来到Stackoveflow!
注意:将数据传递到事件中心后,该数据将保留下来并等待事件中心使用者对其进行处理。事件中心不关心它的处理方式。它只是在乎确保邮件能够成功发送。
有关更多详细信息,请参阅“ Why send to an Azure Event Hub?”。
希望这会有所帮助。
答案 1 :(得分:0)
事件中心建立在服务总线之上。根据服务总线documentation,
使用任何受支持的Service Bus API客户端,将始终明确解决向Service Bus发送消息的操作,这意味着API操作会等待Service Bus的接受结果到达,然后完成发送操作。
如果消息被Service Bus拒绝,则拒绝包含错误指示符和内部带有“ tracking-id”的文本。拒绝还包括有关是否可以以任何成功期望重试该操作的信息。在客户端中,此信息被转换为异常,并引发给send操作的调用方。如果消息已被接受,则操作将以静默方式完成。
使用AMQP协议(它是.NET Standard客户端和Java客户端的专有协议,并且是.NET Framework客户端的选项)时,消息传输和结算是管道传输的,并且是完全异步的,建议您这样做您使用异步编程模型API变体。
发送者可以快速连续地将几条消息放在网上,而不必等待每个消息被确认,否则SBMP协议或HTTP 1.1就是这种情况。这些异步发送操作在分区实体上或对不同实体的发送操作重叠时,在接受和存储相应消息时完成。完成操作也可能会超出原始发送顺序。
我认为这意味着SDK会收到每封邮件的收据。
RetryPolicy Class的ClientEntity.RetryPolicy Property中使用的EventHubSender Class进一步辅助了该理论。
在API Management section on logging-to-eventhub中,还有关于重试间隔的部分。以下是修改返回响应或对某些状态代码采取措施的部分。 知道失败的日志记录尝试的状态代码后,您可以修改策略以对失败的日志记录尝试采取措施。