/// <summary> /// Maps an endpoint convention if not already registered. /// </summary> /// <param name="uri"></param> /// <typeparam name="T"></typeparam> private static void Map <T>(Uri uri) where T : class { if (!EndpointConvention.TryGetDestinationAddress <T>(out _)) { EndpointConvention.Map <T>(uri); } }
async Task InitiateProcessing(BehaviorContext <RegistrationStateInstance, RegistrationReceived> context) { var registration = CreateProcessRegistration(context.Data); Uri destinationAddress; if (!EndpointConvention.TryGetDestinationAddress(registration, out destinationAddress)) { throw new ConfigurationException($"The endpoint convention was not configured: {TypeMetadataCache<ProcessRegistration>.ShortName}"); } await context.GetPayload <ConsumeContext>().Send(destinationAddress, registration).ConfigureAwait(false); _log.InfoFormat("Processing: {0} ({1})", context.Data.SubmissionId, context.Data.ParticipantEmailAddress); }
/// <summary> /// Register and bind SendEndpoint for type <typeparamref name="TMessage"/>. /// </summary> /// <param name="provider"></param> /// <param name="amazonMqOptions">Force connection params.</param> /// <exception cref="ArgumentNullException"/> public static UriBuilder RegisterSendEndPoint <TMessage>(this IServiceProvider provider, AmazonMqOptions?amazonMqOptions = null) where TMessage : class { if (provider == null) { throw new ArgumentNullException(nameof(provider)); } var endPoint = CreateQueueNameFromType <TMessage>(provider, amazonMqOptions); if (!EndpointConvention.TryGetDestinationAddress <TMessage>(out _)) { EndpointConvention.Map <TMessage>(endPoint.Uri); } return(endPoint); }