コード例 #1
0
ファイル: DequeueProcMsgTests.cs プロジェクト: xxtbg/disibox
 private void DequeueManyMessages(EnqueueMethod enqueueMethod, DequeueMethod dequeueMethod)
 {
     foreach (var message in Messages)
         enqueueMethod(message);
     var messages = new List<ProcessingMessage>();
     for (var i = 0; i < Messages.Count; ++i)
         messages.Add(dequeueMethod());
     Assert.True(messages.Count == Messages.Count);
     foreach (var message in Messages)
         Assert.True(messages.Contains(message));
 }
コード例 #2
0
ファイル: SubscriberRMQ.cs プロジェクト: chenbigit/EventBus
        private void OnMessageDequed(IAsyncResult ar)
        {
            BasicDeliverEventArgs message = null;

            try
            {
                if (_disposed != 0 || _cts.IsCancellationRequested)
                {
                    return;
                }

                DequeueMethod dq = (DequeueMethod)ar.AsyncState;
                message = dq.EndInvoke(ar) as BasicDeliverEventArgs;
                if (message != null)
                {
                    OnEventReceived(message.Body.Deserialize <TEvnt>());
                }
                //_model.BasicAck(message.DeliveryTag, false);
            }
            catch (EndOfStreamException endEx)
            {
                Log.Error("End-of-stream exception has occurred while ending the async dequeue operation; the operation will not be requeued", endEx);
                return;
            }
            catch (Exception genEx)
            {
                Log.Error("Exception has occurred while ending the async dequeue operation; \n\r the operation will be requeued", genEx);
                InvokeAsyncDequeue();
                return;
            }

            if (message != null && _HandleOnReceive)
            {
                if (_disposed != 0 || _cts.IsCancellationRequested)
                {
                    return;
                }
                try
                {
                    HandleData(message);
                }
                catch (Exception e)
                {
                    Log.Error("Error occured while try to handle the message; \n\r the next dequeue operation will still occur", e);
                }
            }
            message = null;

            InvokeAsyncDequeue();
        }
コード例 #3
0
ファイル: DequeueProcMsgTests.cs プロジェクト: xxtbg/disibox
 /*=============================================================================
     Private methods
 =============================================================================*/
 private void DequeueOneMessage(EnqueueMethod enqueueMethod, DequeueMethod dequeueMethod)
 {
     enqueueMethod(Messages[0]);
     var message = dequeueMethod();
     Assert.True(message == Messages[0]);
 }
コード例 #4
0
ファイル: SubscriberRMQ.cs プロジェクト: chenbigit/EventBus
        private void InvokeAsyncDequeue()
        {
            DequeueMethod dq = _consumer.Queue.Dequeue;

            System.Threading.Tasks.Task.Factory.FromAsync(dq.BeginInvoke, OnMessageDequed, dq);
        }