/// <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);
        }
예제 #3
0
        /// <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);
        }