dar*_*iol 1 transactions exception nservicebus
我有一个服务(service1)从外部数据库读取数据.转换它并发送到队列.
第二个服务(service2)处理消息并处理它.处理失败时抛出异常并且NServiceBus重试5次以处理它(正常行为)但是永远不会发送回复.:(
所有服务都在交易中运作.
我的问题是: 当抛出异常时,如何从处理程序向service1发送回复(或者只发送不同的消息)?
我只想通知service1在service2上处理失败.
编辑1: 对于更具体的service1标记reeds外部数据库中的记录.需要进一步读取其他数据.
我想将service2的响应返回给service1,它取消了那些抛出异常的记录的记录.
从外部数据库读取数据的下一次迭代可以再次获取该记录.
你总是可以包装Bus.Reply而不是它自己的TransactionScope,例如:
using (var scope = new TransactionScope(TransactionScopeOptions.RequiresNew))
{
Bus.Reply(your message here)
scope.Complete();
}
Run Code Online (Sandbox Code Playgroud)
这会将由于错误导致的事务与导致错误的事务分开.