public void Push(TModel model) { using (var connection = _connectionFactory.CreateConnection()) using (var channel = connection.CreateModel()) { channel.QueueDeclare($"{_rabbitEnv.ToString()}.{_rabbitServices.ToString()}", exclusive: false); var body = MRRabbitMessageModel.Serialize(model, _rabbitServices.ToString(), _rabbitEnv.ToString()); channel.BasicPublish(exchange: "", routingKey: $"{_rabbitEnv.ToString()}.{_rabbitServices.ToString()}", basicProperties: null, body: body); } }
protected virtual void InitRabbit() { var factory = new ConnectionFactory { HostName = _options.Host }; _connection = factory.CreateConnection(); _channel = _connection.CreateModel(); var consumer = new EventingBasicConsumer(_channel); consumer.Received += async(Rmodel, ea) => { var(message, model) = MRRabbitMessageModel.Parse <TMessageType>(ea.Body); await Received(message, model); }; _channel.BasicConsume($"{_rabbitEnv.ToString()}.{_rabbitService.ToString()}", autoAck: true, consumer); }
protected abstract Task Received(MRRabbitMessageModel model, TMessageType message);
protected override async Task Received(MRRabbitMessageModel model, EmailMessage message) { await _emailSender.Send(message); }