Возникли проблемы в обработчике Nservicebus. Обработчик выполняется несколько раз. пожалуйста, найдите код ниже. Столкнувшись с проблемой после выполнения этого кода, обработчик в классе letthandler выполняется несколько раз.
Класс обработчика букв
public Task Handle(Message message, IMessageHandlerContext context)
{
Log.Info($"Processing started");
return Task.CompletedTask;
}
Класс поведения
public override async Task Invoke(IIncomingLogicalMessageContext context, Func<Task> next)
{
//// custom logic before calling the next step in the pipeline.
await next().ConfigureAwait(false);
// custom logic after all inner steps in the pipeline completed.
await context.Publish(context.Message.Instance, this.RetrieveOptions(context)).ConfigureAwait(false);
}
private PublishOptions RetrieveOptions(IIncomingLogicalMessageContext context)
{
var publishOptions = new PublishOptions();
publishOptions.RequireImmediateDispatch();
string requestPoolCounter;
if (context.MessageHeaders.TryGetValue(Header.SentPoolCounter, out requestPoolCounter))
{
publishOptions.SetHeader(Header.SentPoolCounter, requestPoolCounter);
}
string primaryKey;
if (context.MessageHeaders.TryGetValue(Header.PrimaryKey, out primaryKey))
{
publishOptions.SetHeader(Header.PrimaryKey, primaryKey);
}
string crmEntity;
if (context.MessageHeaders.TryGetValue(Header.EntityType, out crmEntity))
{
publishOptions.SetHeader(Header.EntityType, crmEntity);
}
return publishOptions;
}
Класс HandlersConnector
public override Task Invoke(IIncomingLogicalMessageContext context, Func<IInvokeHandlerContext, Task> stage)
{
context.MessageHandled = true;
return Task.CompletedTask;
}
Похоже, что после выполнения кода
await context.Publi sh (context.Message.Instance, this.RetrieveOptions (context)). ConfigureAwait (false); в классе Behavior выполняется обработчик lett, и l oop будет продолжаться. Не уверен, в чем проблема. Недавно ссылка на проект обновлена с 4 до 7,2 Nservicebus. Есть предложения?