Сообщение об ошибке RabbitMQ / MassTrans: Guid должен содержать 32 цифры с 4 штрихами - PullRequest
0 голосов
/ 27 января 2020

Когда я пытаюсь поместить элемент в очередь 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()));
}
...