Esempio n. 1
0
 public ChannelHandler(string channelName, IModel channel, ConnectionFactory connectionFactory, RabbitMQSubscription subscription)
 {
     _ProcessMessages   = true;
     _Queues            = new Dictionary <string, MessageQueue>();
     _ChannelName       = channelName;
     _Model             = channel;
     _ConnectionFactory = connectionFactory;
     _Subscription      = subscription;
 }
Esempio n. 2
0
        public DALRabbitMQ(List<RabbitMQConnection> servers)
        {
            _FireAndForgetMessages = new Queue<QueuedMessage>(10000);
            _ConfirmMessagesWaitingAck = new Dictionary<ulong,string>(10000);
            _TriggerPublishTransactionalMessages = new ManualResetEvent(false);
            _TriggerPublishConfirmMessages = new ManualResetEvent(false);
            _TriggerPublishFireAndForgetMessages = new ManualResetEvent(false);
            _Servers = servers;
            _ServerCount = _Servers.Count;

            SetMessageDirectory();
            _Subscriptions = new RabbitMQSubscription[_ServerCount];
            for (int index = 0; index < _ServerCount; index++)
            {
                _Subscriptions[index] = new RabbitMQSubscription(_Servers[index],this);
            }
            Random rnd = new Random();
            _CurrentHostIndex = rnd.Next(_ServerCount);
            _ConfirmsMessagePath = Path.Combine(_TransactionalMessagePath, "Confirms");
            _RejectedMessagePath = Path.Combine(_TransactionalMessagePath, "Rejected");
            _TransactionalRequeueMessagePath = Path.Combine(_TransactionalMessagePath, "Requeue");
            _ConfirmsRequeueMessagePath = Path.Combine(_ConfirmsMessagePath, "Requeue");
            if (!Directory.Exists(_TransactionalMessagePath))
                Directory.CreateDirectory(_TransactionalMessagePath);
            if (!Directory.Exists(_ConfirmsMessagePath))
                Directory.CreateDirectory(_ConfirmsMessagePath);
            if (!Directory.Exists(_RejectedMessagePath))
                Directory.CreateDirectory(_RejectedMessagePath);
            if (!Directory.Exists(_TransactionalRequeueMessagePath))
                Directory.CreateDirectory(_TransactionalRequeueMessagePath);
            if (!Directory.Exists(_ConfirmsRequeueMessagePath))
                Directory.CreateDirectory(_ConfirmsRequeueMessagePath);

            CheckForUnSentMessage(_ConfirmsMessagePath);
            CheckForUnSentMessage(_ConfirmsRequeueMessagePath);

            CheckForUnSentMessage(_TransactionalMessagePath);
            CheckForUnSentMessage(_TransactionalRequeueMessagePath);

            if (Directory.GetFiles(_TransactionalMessagePath, "*.msg").Length > 0)
                StartTransactionalThread();
            if (Directory.GetFiles(_ConfirmsMessagePath, "*.msg").Length > 0)
                StartConfirmsThread();
            ReadQueueFromDisk(_FireAndForgetMessages, Path.Combine(_TransactionalMessagePath, "FireAndForget"));
            if (_FireAndForgetMessages.Count > 0)
                StartFireAndForgetThread();
        }
Esempio n. 3
0
        public DALRabbitMQ(List <RabbitMQConnection> servers)
        {
            _FireAndForgetMessages               = new Queue <QueuedMessage>(10000);
            _ConfirmMessagesWaitingAck           = new Dictionary <ulong, string>(10000);
            _TriggerPublishTransactionalMessages = new ManualResetEvent(false);
            _TriggerPublishConfirmMessages       = new ManualResetEvent(false);
            _TriggerPublishFireAndForgetMessages = new ManualResetEvent(false);
            _Servers     = servers;
            _ServerCount = _Servers.Count;

            SetMessageDirectory();
            _Subscriptions = new RabbitMQSubscription[_ServerCount];
            for (int index = 0; index < _ServerCount; index++)
            {
                _Subscriptions[index] = new RabbitMQSubscription(_Servers[index], this);
            }
            Random rnd = new Random();

            _CurrentHostIndex                = rnd.Next(_ServerCount);
            _ConfirmsMessagePath             = Path.Combine(_TransactionalMessagePath, "Confirms");
            _RejectedMessagePath             = Path.Combine(_TransactionalMessagePath, "Rejected");
            _TransactionalRequeueMessagePath = Path.Combine(_TransactionalMessagePath, "Requeue");
            _ConfirmsRequeueMessagePath      = Path.Combine(_ConfirmsMessagePath, "Requeue");
            if (!Directory.Exists(_TransactionalMessagePath))
            {
                Directory.CreateDirectory(_TransactionalMessagePath);
            }
            if (!Directory.Exists(_ConfirmsMessagePath))
            {
                Directory.CreateDirectory(_ConfirmsMessagePath);
            }
            if (!Directory.Exists(_RejectedMessagePath))
            {
                Directory.CreateDirectory(_RejectedMessagePath);
            }
            if (!Directory.Exists(_TransactionalRequeueMessagePath))
            {
                Directory.CreateDirectory(_TransactionalRequeueMessagePath);
            }
            if (!Directory.Exists(_ConfirmsRequeueMessagePath))
            {
                Directory.CreateDirectory(_ConfirmsRequeueMessagePath);
            }

            CheckForUnSentMessage(_ConfirmsMessagePath);
            CheckForUnSentMessage(_ConfirmsRequeueMessagePath);

            CheckForUnSentMessage(_TransactionalMessagePath);
            CheckForUnSentMessage(_TransactionalRequeueMessagePath);

            if (Directory.GetFiles(_TransactionalMessagePath, "*.msg").Length > 0)
            {
                StartTransactionalThread();
            }
            if (Directory.GetFiles(_ConfirmsMessagePath, "*.msg").Length > 0)
            {
                StartConfirmsThread();
            }
            ReadQueueFromDisk(_FireAndForgetMessages, Path.Combine(_TransactionalMessagePath, "FireAndForget"));
            if (_FireAndForgetMessages.Count > 0)
            {
                StartFireAndForgetThread();
            }
        }
			public ChannelHandler(string channelName, IModel channel, ConnectionFactory connectionFactory, RabbitMQSubscription subscription)
			{
				_ProcessMessages = true;
				_Queues = new Dictionary<string, MessageQueue>();
				_ChannelName = channelName;
				_Model = channel;
				_ConnectionFactory = connectionFactory;
				_Subscription = subscription;
			}