Пример #1
0
 /// <summary>
 /// 通过MQ发送消息
 /// </summary>
 /// <param name="message"></param>
 public void SendMessageByMQ(T message)
 {
     try
     {
         if (MqConnection == null)
         {
             InitConnection();
             throw new Exception($"{nameof(SendMessageByMQ)}:未获取到 MQ 连接!");
         }
         if (channel == null)
         {
             channel = MqConnection.CreateModel();
         }
         if (IsCreateExchange)
         {
             channel.ExchangeDeclare(ExchangeName, ExchangeType, true);
         }
         var msg  = JsonConvert.SerializeObject(message);
         var body = Encoding.UTF8.GetBytes(msg);
         //发送信息
         channel.BasicPublish(ExchangeName, RoutingKey, null, body);
     }
     catch (Exception e)
     {
         throw new Exception("MQ 发送消息失败!", e);
     }
 }
        public virtual void Stop()
        {
            if (MqChannel == null)
            {
                return;
            }

            MqChannel.Dispose();
            MqConnection.SafeDispose();
        }
        private void CreateConnectionAndSubscriberChannel()
        {
            var factory = new ConnectionFactory
            {
                AutomaticRecoveryEnabled = true,
                TopologyRecoveryEnabled  = false,
                RequestedHeartbeat       = 30 // seconds
            };

            factory.InjectFrom(_subscriberConfig);

            MqConnection = factory.CreateConnection();
            //MqConnection.ConnectionShutdown += HandleMqConnectionShutdown;
            MqChannel = MqConnection.CreateModel();
        }
Пример #4
0
        public Task StartAsync <TContext>(IHttpApplication <TContext> application, CancellationToken cancellationToken)
        {
            return(Task.Run(() =>
            {
                var connectionFactory = new ConnectionFactory()
                {
                    DispatchConsumersAsync = true,
                    AutomaticRecoveryEnabled = false,
                    TopologyRecoveryEnabled = false,
                    //VirtualHost = "testvhost",
                };
                var connection = connectionFactory.CreateConnection();
                var model = connection.CreateModel();
                var queueDeclareResult = model.QueueDeclare(queue: _queueName, durable: true, exclusive: false, autoDelete: false);

                var mqConnection = new MqConnection(connection, model, connectionFactory.VirtualHost);
                var serverContextFactory = new MqRequestServerContextFactory(Features);
                var requestProcessor = new MqRequestProcessor <TContext>(serverContextFactory, _loggerFactory.CreateLogger <MqRequestProcessor>(), application);
                var consumer = new MqConsumer(mqConnection, requestProcessor);

                model.BasicConsume(_queueName, autoAck: false, consumer: consumer);
            }));
        }
Пример #5
0
 protected BaseProducer(MqConnection connectionManager, ILogger logger, ISerializer <TMessage> serializer)
 {
     _currentProducer = connectionManager.CreateProducer(logger, serializer);
 }
Пример #6
0
 protected BaseDistributedProducer(MqConnection connectionManager, ILogger logger, ISerializer <TMessage> serializer, DistributedProducerConfig config)
 {
     _currentProducer = connectionManager.CreateDistributedProducer(logger, serializer, config);
 }
Пример #7
0
 protected BaseConsumer(MqConnection connection, ILogger logger, ISerializer <TMessage> serializer)
 {
     _currentConsumer = connection.CreateConsumer(logger, serializer, ProcMessage);
 }