【发布时间】:2015-01-25 05:18:03
【问题描述】:
我有一个简单的单向消息传递模式,我需要在其中实现 Saga,因为我需要调用超过 5 个 Web 服务,所以任何服务都响应我不希望 saga 完成。
但是当我实现 saga 时,它给出一个错误找不到消息类型的 saga,因此它调用 SagaNotFoundHandler
这是我的 Saga 数据模型
public class MySagaData : ContainSagaData
{
[Unique]
public Guid OrderID { get; set; }
public string SomeData { get; set; }
}
这是 Saga 和消息处理程序类
public class PlaceOrderHandler : Saga<MySagaData> ,IHandleMessages<PlaceOrder>
{
public override void ConfigureHowToFindSaga()
{
ConfigureMapping<PlaceOrder>(m => m.OrderID).ToSaga(s => s.OrderID);
}
public void Handle(PlaceOrder message)
{
try
{
Console.WriteLine("ORder Recevied....for ID {0}", message.OrderID);
//invoke 5 web service methods();
MarkAsComplete();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
这是我的端点配置
public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, IWantCustomInitialization,IWantToRunWhenBusStartsAndStops
{
public void Init()
{
Configure.With()
.DefaultBuilder()
.UseTransport<Msmq>()
.MsmqSubscriptionStorage()
.InMemorySagaPersister()
.UseInMemoryTimeoutPersister()
.UnicastBus();
}
public void Start()
{
Console.WriteLine("This is the process hosting the saga.");
}
public void Stop()
{
Console.WriteLine("Stopped.");
}
}
【问题讨论】:
标签: c# wcf nservicebus esb