簡體   English   中英

C# Azure 事件網格發布 EventGridTopicEvent

[英]C# Azure Event Grid publish EventGridTopicEvent

我有一個場景,我需要發布“EventGridTopicEvent”數據,同時我需要將此事件信息存儲在 Azure 存儲表中。 我想知道如果發布事件是否成功完成(任何錯誤),是否有任何方法可以獲取信息(如 T/F),如果發布成功,那么只有我應該將數據保存到表存儲中。

I need to handle the above logic via C# Event Handler(Mediator), I tried with C# TransactionScope but it is not having mechanism like Rollback. If event is not published then rollback the event as well as not store anything in the table storage or I should not make a call to handle the database transaction.

I have also tried _mediator.Publish(request).IsCompletedSuccessfully but it is giving true always even though I pass invalid request data.

code snippet
public async Task<Result<Response<XYZ>>> Handle(EventGridTopicEvent request, CancellationToken cancellationToken)
{
using TransactionScope transactionScope = new TransactionScope();
{
try
{
bool eventPublishStatus = _mediator.Publish(request).IsCompletedSuccessfully;
if (eventPublishStatus)
{
//Insert request data to Table storage
}}}}

我有一個場景,我需要發布“EventGridTopicEvent”數據,同時我需要將此事件信息存儲在 Azure 存儲表中。 我想知道如果發布事件是否成功完成(任何錯誤),是否有任何方法可以獲取信息(如 T/F),如果發布成功,那么只有我應該將數據保存到表存儲中。

發布事件是否成功完成是什么意思?

  • 如果您的意思是它發布到事件網格,那么很容易:當對事件網格 SDK 的調用毫無例外地完成時,數據將成功發布到事件網格。
  • 如果您想知道事件的所有消費者是否確實獲得了數據並成功處理了數據,那么您將面臨挑戰。

在您的應用程序的上下文中,很難判斷是否所有消費者都收到了事件並對其進行了處理,因為事件網格是一個異步事件平台。 如果它未能傳遞事件,它將重試一段時間,然后可以將事件轉移到死信存儲( 請參閱文檔)。 實際上,這意味着在發布數據和使用數據之間可能存在延遲。 鑒於此,您可以輕松地看到您的應用程序要知道所有數據都已成功接收和處理是多么困難。

如果您想將數據存儲為某種數據成功發布到事件網格的日志,您實際上可能會創建對事件網格的訂閱,並使用該訂閱將發布的數據存儲在表存儲中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM