Когда я пытаюсь поместить элемент в очередь rabbitmq, возвращается исключение при разборе guid. Даже если я удаляю все направляющие и заменяю их строкой (для целей тестирования), появляется одно и то же сообщение.
fail: MassTransit.Messages[0]
S-FAULT rabbitmq://rabbitmq.rabbitmq/rs_2b94a1c9-b907-4ae6-af2b-507341cb12d9_default?bind=true fda80000-e461-fe4d-922f-08d7a2af25c9 sample.Cloud.aps.Api.Model.AddResourceRequest Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
fail: Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher[8]
Failed to invoke hub method 'AddResourceAsync'.
System.FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
at System.Guid.GuidResult.SetFailure(Boolean overflow, String failureMessageID)
at System.Guid.TryParseExactN(ReadOnlySpan`1 guidString, GuidResult& result)
at System.Guid.TryParseGuid(ReadOnlySpan`1 guidString, GuidResult& result)
at System.Guid.Parse(String input)
at sample.Cloud.MessageBroker.MassTransitExtensions.<>c__DisplayClass1_1.<InitializeMassTransit>b__3(SendContext ctx)
at GreenPipes.Filters.DelegateFilter`1.Send(TContext context, IPipe`1 next)
at GreenPipes.Filters.SplitFilter`2.Send(TInput context, IPipe`1 next)
at GreenPipes.Pipes.LastPipe`1.Send(TContext context)
at MassTransit.Pipeline.Pipes.MessageSendPipe`1.GreenPipes.IPipe<MassTransit.SendContext<TOutput>>.Send(SendContext`1 context)
at MassTransit.Pipeline.Pipes.SendPipe.MessagePipe`1.MassTransit.Pipeline.Pipes.SendPipe.IMessagePipe.Send[T](SendContext`1 context)
at MassTransit.Pipeline.Pipes.SendPipe.MassTransit.Pipeline.ISendContextPipe.Send[T](SendContext`1 context)
at MassTransit.Transports.SendEndpoint.EndpointSendContextPipe`1.Send(SendContext`1 context)
at MassTransit.RabbitMqTransport.Transport.RabbitMqSendTransport.SendPipe`1.Send(ModelContext modelContext)
at MassTransit.RabbitMqTransport.Transport.RabbitMqSendTransport.SendPipe`1.Send(ModelContext modelContext)
at GreenPipes.Agents.PipeContextSupervisor`1.GreenPipes.IPipeContextSource<TContext>.Send(IPipe`1 pipe, CancellationToken cancellationToken)
at GreenPipes.Agents.PipeContextSupervisor`1.GreenPipes.IPipeContextSource<TContext>.Send(IPipe`1 pipe, CancellationToken cancellationToken)
at GreenPipes.Agents.PipeContextSupervisor`1.GreenPipes.IPipeContextSource<TContext>.Send(IPipe`1 pipe, CancellationToken cancellationToken)
at sample.Cloud.aps.WebApi.Hubs.apsHub.AddResourceAsync(AddResourceRequest request) in /src/sample.Cloud.aps.WebApi/Hubs/apsHub.cs:line 90
at Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher`1.ExecuteHubMethod(ObjectMethodExecutor methodExecutor, THub hub, Object[] arguments)
at Microsoft.AspNetCore.SignalR.Internal.DefaultHubDispatcher`1.<>c__DisplayClass13_0.<<Invoke>g__ExecuteInvocation|0>d.MoveNext()
Received request
Есть ли что-то, что можно сделать, чтобы отладить источник проблемы? Ошибка не появляется в моей локальной установке rabbitmq, но в azure экземплярах.
Объект, который должен быть зачислен:
/// <summary>
/// Add resource request
/// </summary>
public class AddResourceRequest : BaseModel
{
/// <summary>
/// Gets or sets the resource id
/// </summary>
public string Id { get; set; }
/// <summary>
/// Gets or sets the resource type
/// </summary>
public ResourceType Type { get; set; }
}
Код для отправки данных:
public async Task AddResourceAsync(AddResourceRequest request)
{
Console.WriteLine("Add resource");
var endpoint = await GetEndpointAsync(request);
await endpoint.Send(request);
Console.WriteLine("...");
}
public async Task<ISendEndpoint> GetEndpointAsync(BaseModel model)
{
return await messageBus.GetSendEndpoint(new Uri($"queue:rs_{model.OrganizationId}_{model.Name}".ToLower()));
}