public async Task EmitBookingRequestPlacedEvent(BookingRequestPlacedEvent @event) { using (IConnection conn = _connectionFactory.CreateConnection()) { using (IModel channel = conn.CreateModel()) { channel.QueueDeclare( queue: BookingRequestPlacedEventsQueueName, durable: false, exclusive: false, autoDelete: false, arguments: null ); string jsonPayload = JsonConvert.SerializeObject(@event); var body = Encoding.UTF8.GetBytes(jsonPayload); channel.BasicPublish( exchange: "", routingKey: BookingRequestPlacedEventsQueueName, basicProperties: null, body: body ); } }; }
public async Task <Guid> BookProperty(BookingRequest request) { var bookingRequestPlacedEvent = new BookingRequestPlacedEvent() { Timestamp = DateTime.UtcNow, RequestId = Guid.NewGuid(), PropertyId = request.PropertyId, CustomerId = request.CustomerId, From = request.From, To = request.To }; await _eventEmmiter.EmitBookingRequestPlacedEvent(bookingRequestPlacedEvent); return(bookingRequestPlacedEvent.RequestId); }