public IEvent CreateEvent(string exchange) { IEvent ev; if (exchange == EventType.SendEmail.ToString()) { ev = new SendEmailEvent(); } else if (exchange == EventType.SendSms.ToString()) { ev = new SendSmsEvent(); } else { throw new EventNotSupportedException(exchange); } return(ev); }
public async Task <string> SendMessage(MessageViewModel message) { var sendSmsEvent = new SendSmsEvent { Id = message.Id, Body = message.Body, From = message.From, To = message.To, Version = "v1.0" }; var factory = new ConnectionFactory() { HostName = "localhost" }; using (var connection = factory.CreateConnection()) using (var channel = connection.CreateModel()) { channel.ExchangeDeclare(exchange: "sms", type: ExchangeType.Direct); IBasicProperties props = channel.CreateBasicProperties(); props.CorrelationId = Guid.NewGuid().ToString(); props.ReplyTo = "receive"; var binaryFormatter = new CustomBinaryFormatter(); byte[] body = binaryFormatter.ToByteArray(sendSmsEvent); channel.BasicPublish(exchange: "sms", routingKey: "send", basicProperties: props, body: body); } return("Your message will be send soon"); }