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); }