예제 #1
0
 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);
         }
 }
예제 #2
0
        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);
        }
예제 #3
0
 protected abstract Task Received(MRRabbitMessageModel model, TMessageType message);
예제 #4
0
 protected override async Task Received(MRRabbitMessageModel model, EmailMessage message)
 {
     await _emailSender.Send(message);
 }