我有一個 MassTransit 路線單,其中包含一些完美運行的活動(我喜歡 MT),但我現(xiàn)在想為失敗的事件添加其他信息(即錯誤名稱和描述)。目前我在活動中捕獲我的自定義異常并發(fā)回錯誤響應,該響應按計劃啟動所有補償活動,但我似乎無法在訂閱者中獲取異常詳細信息(添加到我的事件中)然后發(fā)送回傳奇)。我的活動如下所示:public async Task<ExecutionResult> Execute(ExecuteContext<ICreateLink> context) { var messageCommand = context.Arguments; var command = new CreateLink( messageCommand.LinkId, messageCommand.GroupId); try { await _commandDispatcher.ExecuteAsync(command).ConfigureAwait(false); return context.Completed(); } catch (Exception ex) { return context.Faulted(ex); } }然后在構建路由單時我有:builder.AddSubscription( context.SourceAddress, RoutingSlipEvents.ActivityFaulted, RoutingSlipEventContents.All, nameof(CreateLinkActivity), x => x.Send<ICreateLinkFailed>(new CreateLinkFailed { LinkId = context.Message.LinkId, LinkName = context.Message.Name }));我以為我可以從上下文訪問異常信息,但可惜我似乎無法找到它,這對我來說是最后一塊拼圖。我開始認為我沒有考慮這個權利。最終,我想將錯誤類型傳遞回路由單,然后傳遞給它的調用 saga。
1 回答

陪伴而非守候
TA貢獻1757條經驗 獲得超8個贊
通過訂閱,您的事件類型可以包含與發(fā)布的內置事件具有相同類型/名稱的屬性。這些屬性將由 MT 自動添加到事件中(無需在 Send 調用中映射它們)。
因此,在您的情況下,可以將 ExceptionInfo 屬性復制到您的事件界面中 - 并且在使用事件時將顯示該數據。
在幕后,MassTransit 將內置事件的 JSON 和您自己的事件分配合并到一個組合的 JSON 文檔中。
- 1 回答
- 0 關注
- 230 瀏覽
添加回答
舉報
0/150
提交
取消