public async Task Consume(ConsumeContext <SubmitOrder> context)
        {
            _logger.LogInformation("Order Submission Received: {OrderId}", context.Message.OrderId);

            await context.Publish(new OrderSubmitted
            {
                OrderId        = context.Message.OrderId,
                OrderNumber    = context.Message.OrderNumber,
                OrderTimestamp = context.Message.Timestamp,
            });

            if (context.IsResponseAccepted <OrderSubmissionAccepted>())
            {
                await context.RespondAsync(new OrderSubmissionAccepted
                {
                    OrderId     = context.Message.OrderId,
                    OrderNumber = context.Message.OrderNumber
                });
            }
        }
        public async Task Consume(ConsumeContext <ChargeMemberFine> context)
        {
            var result = await _fineCharger.Charge(context.Message.MemberId, context.Message.Amount);

            // Consumer는 ....
            //
            // - context.Publish<T>()
            // - context.Send<T>
            // ... 에 다가.. 받은 메시지에 응답까지 할 수 있음.

            // context.IsResponseAccepted<T>() 는 Masstransit v7.x 에 추가됨.
            // --> 메시지 헤더의 Request.Accepts (응답메시지 타입에 대한 문자열 목록) 으로 부터 확인한다.
            if (result == ChargeResult.Overriden && context.IsResponseAccepted <FineOverriden>())
            {
                await context.RespondAsync <FineOverriden>(context.Message);

                return;
            }
            await context.RespondAsync <FineCharged>(context.Message);
        }