Example #1
0
        /// <summary>
        /// Send a request from the bus to the endpoint, and return a Task which can be awaited for the response.
        /// </summary>
        /// <param name="consumeContext"></param>
        /// <param name="bus">A started bus instance</param>
        /// <param name="message">The request message</param>
        /// <param name="cancellationToken">An optional cancellationToken for this request</param>
        /// <param name="timeout">An optional timeout for the request (defaults to 30 seconds)</param>
        /// <param name="callback">A callback, which can modify the <see cref="SendContext"/> of the request</param>
        /// <typeparam name="TRequest">The request type</typeparam>
        /// <typeparam name="TResponse">The response type</typeparam>
        /// <returns></returns>
        public static Task <Response <TResponse> > Request <TRequest, TResponse>(this ConsumeContext consumeContext, IBus bus, TRequest message,
                                                                                 CancellationToken cancellationToken = default, RequestTimeout timeout = default, Action <SendContext <TRequest> > callback = null)
            where TRequest : class
            where TResponse : class
        {
            var requestClient = consumeContext.CreateRequestClient <TRequest>(bus, timeout);

            var requestHandle = requestClient.Create(message, cancellationToken);

            if (callback != null)
            {
                requestHandle.UseExecute(callback);
            }

            return(requestHandle.GetResponse <TResponse>());
        }
Example #2
0
        /// <summary>
        /// Send a request from the bus to the endpoint, and return a Task which can be awaited for the response.
        /// </summary>
        /// <param name="consumeContext"></param>
        /// <param name="bus">A started bus instance</param>
        /// <param name="message">The request message</param>
        /// <param name="cancellationToken">An optional cancellationToken for this request</param>
        /// <param name="timeout">An optional timeout for the request (defaults to 30 seconds)</param>
        /// <param name="callback">A callback, which can modify the <see cref="SendContext" /> of the request</param>
        /// <typeparam name="TRequest">The request type</typeparam>
        /// <typeparam name="TResponse">The response type</typeparam>
        /// <returns></returns>
        public static async Task <Response <TResponse> > Request <TRequest, TResponse>(this ConsumeContext consumeContext, IBus bus, TRequest message,
                                                                                       CancellationToken cancellationToken = default, RequestTimeout timeout = default, Action <SendContext <TRequest> > callback = null)
            where TRequest : class
            where TResponse : class
        {
            IRequestClient <TRequest> requestClient = consumeContext.CreateRequestClient <TRequest>(bus, timeout);

            using (RequestHandle <TRequest> requestHandle = requestClient.Create(message, cancellationToken))
            {
                if (callback != null)
                {
                    requestHandle.UseExecute(callback);
                }

                return(await requestHandle.GetResponse <TResponse>().ConfigureAwait(false));
            }
        }
Example #3
0
        public async Task Consume(ConsumeContext <OrderRequest> context)
        {
            await context.RespondAsync <OrderResponse>(new
            {
            });

            await context.Publish <OrderResponse>(new
            {
            });

            var endpoint = await context.GetSendEndpoint(new Uri("queue:some-queue"));

            await endpoint.Send <OrderResponse>(new
            {
            });

            var requestClient = context.CreateRequestClient <OrderRequest>(null);

            var request = requestClient.Create(new
            {
            });
        }
Example #4
0
 /// <summary>
 /// Initializes a new instance.
 /// </summary>
 /// <param name="bus"></param>
 public ConsumeContextRequestClientProxy(ConsumeContext context)
 {
     this.impl = context.CreateRequestClient <TRequest>(context.GetPayload <IBus>());
 }