![](/img/trans.png)
[英]How to design a NServiceBus Saga started by receipt of multiple messages
[英]NServiceBus saga design issue
我在使用NServiceBus saga時遇到“樂觀並發沖突”異常。
我的傳奇涵蓋了一個相對簡單的流程:當任何消息到達時,它幾乎沒有外部請求,並在一段時間后收集回復。
下面你可以找到我的傳奇的一個例子。
NServiceBus為此類流產生“樂觀並發沖突”異常是否正常?
我應該考慮以某種方式重新設計傳奇嗎?
class MySaga: SqlSaga<SagaData>, ...
{
CorrelationPropertyName => nameof(SagaData.UserId);
public Task Handle(StartSagaMessage message, IMessageHandlerContext context)
{
// save a new item id
Data.Items.Add(message.ItemId);
// make an external request for the item title
context.Send<GetItemTitle>(message.ItemId);
// make an external request for the item description
context.Send<GetItemDescription>(message.ItemId);
// gather results after one hour
RequestTimeout<RequestTimeout>(TimeSpan.FromHours(1));
}
// this method sometimes raises "optimistic concurrency violation" exception
public Task Handle(GetItemTitleResponse message, IMessageHandlerContext context)
{
Data.ItemTitles[message.ItemId] = message.ItemTitle;
}
// this method sometimes raises "optimistic concurrency violation" exception
public Task Handle(GetItemDescriptionResponse message, IMessageHandlerContext context)
{
Data.ItemDescriptions[message.ItemId] = message.ItemDescription;
}
public Task Handle(RequestTimeout state, IMessageHandlerContext context)
{
context.Send<ProcessItems>(Data.Items, Data.ItemTitles, Data.ItemDescriptions);
MarkAsComplete();
}
}
我在用:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.