예제 #1
0
    //public MessageQueue Retries { get; set; }
    //public MessageQueue Timeouts { get; set; }
    //public MessageQueue TimeoutsDispatcher { get; set; }

    public MsmqMessageQueue4(string serverName, Queue queue)
      : base(serverName, queue) {

      //Retries = Msmq.Create(serverName, queue.Name + ".retries", QueueAccessMode.ReceiveAndAdmin);
      //Timeouts = Msmq.Create(serverName, queue.Name + ".timeouts", QueueAccessMode.ReceiveAndAdmin);
      //TimeoutsDispatcher = Msmq.Create(serverName, queue.Name + ".timeoutssispatcher", QueueAccessMode.ReceiveAndAdmin);
    }
		public virtual void Initialize(string serverName, Queue[] monitorQueues, SbmqmMonitorState monitorState)
		{
			_serverName = serverName;

			MonitorQueues = monitorQueues;
			_monitorState = monitorState;
		}
    public void Initialize(Dictionary<string, object> connectionSettings, Queue[] monitorQueues, SbmqmMonitorState monitorState) {
      _connectionSettings = connectionSettings;

      MonitorQueues = monitorQueues;
      _monitorState = monitorState;

      LoadQueues();

    }
예제 #4
0
    public AzureMessageQueue(string connectionString, Queue queue, bool deadLetter = false) {
      _connectionStr = connectionString;
      IsDeadLetterQueue = deadLetter;

      Queue = !deadLetter ? queue : new Model.Queue(queue.Name, QueueType.Error, 0xFF0000, queue.ContentFormat);

      var name = !deadLetter ? queue.Name : QueueClient.FormatDeadLetterPath(queue.Name);
      Main = QueueClient.CreateFromConnectionString(connectionString, name, ReceiveMode.ReceiveAndDelete);
    }
        public MsmqMessageQueue(string serverName, Queue queue)
        {
            Queue = queue;

              Main = Msmq.Create(serverName, queue.Name, QueueAccessMode.ReceiveAndAdmin);

              _mainContent = Msmq.Create(serverName, queue.Name, QueueAccessMode.ReceiveAndAdmin);
              _mainContent.MessageReadPropertyFilter.ClearAll();
              _mainContent.MessageReadPropertyFilter.Body = true;

              if( Main.UseJournalQueue ) { // Error when trying to use FormatName, strange as it should work according to MSDN. Temp solution for now.
            Journal = new MessageQueue(string.Format(@"{0}\Private$\{1};JOURNAL", serverName, queue.Name));

            _journalContent = new MessageQueue(string.Format(@"{0}\Private$\{1};JOURNAL", serverName, queue.Name));
            _journalContent.MessageReadPropertyFilter.ClearAll();
            _journalContent.MessageReadPropertyFilter.Body = true;
              }
        }
        //public QueueClient Journal { get; set; }
        //public bool UseJournalQueue { get { return Main.UseJournalQueue; } }
        //public bool CanReadJournalQueue { get { return Main.UseJournalQueue && Journal.CanRead; } }
        public AzureMessageQueue(string connectionString, Queue queue)
        {
            _connectionStr = connectionString;
              Queue = queue;

              Main = QueueClient.CreateFromConnectionString(connectionString, queue.Name);

              //Main = Msmq.Create(connectionString, queue.Name, QueueAccessMode.ReceiveAndAdmin);

              //_mainContent = Msmq.Create(connectionString, queue.Name, QueueAccessMode.ReceiveAndAdmin);
              //_mainContent.MessageReadPropertyFilter.ClearAll();
              //_mainContent.MessageReadPropertyFilter.Body = true;

              //if( Main.UseJournalQueue ) { // Error when trying to use FormatName, strange as it should work according to MSDN. Temp solution for now.
              //  Journal = new MessageQueue(string.Format(@"{0}\Private$\{1};JOURNAL", connectionString, queue.Name));

              //  _journalContent = new MessageQueue(string.Format(@"{0}\Private$\{1};JOURNAL", connectionString, queue.Name));
              //  _journalContent.MessageReadPropertyFilter.ClearAll();
              //  _journalContent.MessageReadPropertyFilter.Body = true;
              //}
        }
        private QueueItem CreateQueueItem(Queue queue, Message msg)
        {
            var itm = new QueueItem(queue);
            itm.DisplayName = msg.Label;
            itm.Id = msg.Id;
            itm.ArrivedTime = msg.ArrivedTime;
            //itm.Content = ReadMessageStream(msg.BodyStream);

            itm.Headers = new Dictionary<string, string>();
            if (msg.Extension.Length > 0)
            {
                var stream = new MemoryStream(msg.Extension);
                var transportMessageHeaders = TransportMessageHeaders.Create(stream.ToArray());
                //var o = headerSerializer.Deserialize(stream);

                var contentType = transportMessageHeaders["Content-Type"];
                var originalMessageId = transportMessageHeaders["Original-Message-Id"];

                if (contentType != null)
                    itm.Headers.Add("Content-Type", contentType);

                if (originalMessageId != null)
                    itm.Headers.Add("Original-Message-Id", originalMessageId);
            }


            return itm;
        }
        private bool TryAddItem(Message msg, Queue q)
        {

            lock (_peekItemsLock)
            {

                if (!_peekedItems.Any(i => i.Id == msg.Id))
                {

                    var itm = CreateQueueItem(q, msg);

                    if (PrepareQueueItemForAdd(itm))
                        _peekedItems.Add(itm);


                    return true;

                }
                else return false;
            }

        }
 private void AddMsmqQueue(string serverName, Queue queue)
 {
     try
     {
         _monitorMsmqQueues.Add(new MsmqMessageQueue(serverName, queue));
     }
     catch (Exception e)
     {
         OnError("Error occured when loading queue: '{0}\\{1}'\n\r".With(serverName, queue.Name), e, false);
     }
 }
 public override void Initialize(string serverName, Queue[] monitorQueues, SbmqmMonitorState monitorState)
 {
     base.Initialize(serverName, monitorQueues, monitorState);
 }
        private QueueItem CreateQueueItem(Queue queue, Message msg)
        {
            var itm = new QueueItem(queue);
              itm.DisplayName = msg.Label;
              itm.Id = msg.Id;
              itm.ArrivedTime = msg.ArrivedTime;
              //itm.Content = ReadMessageStream(msg.BodyStream);

              itm.Headers = new Dictionary<string, string>();
              if( msg.Extension.Length > 0 ) {
            var stream = new MemoryStream(msg.Extension);
            var o = headerSerializer.Deserialize(stream);

            foreach( var pair in o as List<HeaderInfo> )
              if( pair.Key != null )
            itm.Headers.Add(pair.Key, pair.Value);
              }

              return itm;
        }
        public override void Initialize(string serverName, Queue[] monitorQueues, SbmqmMonitorState monitorState)
        {
            base.Initialize(serverName, monitorQueues, monitorState);

              LoadQueues();

              StartPeekThreads();
        }
        private QueueItem CreateQueueItem(Queue queue, BrokeredMessage msg)
        {
            var itm = new QueueItem(queue);
              itm.DisplayName = msg.Label;
              itm.MessageQueueItemId = msg.SequenceNumber;
              itm.Id = msg.SequenceNumber.ToString(); //msg.MessageId;
              itm.ArrivedTime = msg.EnqueuedTimeUtc;
              try {
            itm.Content = ReadMessageStream(new System.IO.MemoryStream(msg.GetBody<byte[]>()));

              } catch( SerializationException ex ) {
            itm.Content = "** Failed to get message content, {0} ** \n\n{1}".With(ex.Message, ex.StackTrace);
            //itm.Error = new QueueItemError() {
            //  Message = ex.Message,
            //  StackTrace = ex.StackTrace,
            //  State = QueueItemErrorState.Retry
            //};
              }
              //itm.Content = ReadMessageStream(msg.BodyStream);

              itm.Headers = new Dictionary<string, string>();
              if( msg.Properties.Count > 0 )
            msg.Properties.ForEach(p => itm.Headers.Add(p.Key, p.Value.ToString()));

              return itm;
        }
        private static QueueItem CreateQueueItem(Queue queue, BrokeredMessage msg)
        {
            var itm = new QueueItem(queue);
              itm.DisplayName = msg.Label;
              itm.MessageQueueItemId = msg.SequenceNumber;
              itm.Id = msg.SequenceNumber.ToString(); //msg.MessageId;
              itm.ArrivedTime = msg.EnqueuedTimeUtc;
              itm.Content = ReadMessageStream(new System.IO.MemoryStream(msg.GetBody<byte[]>()));
              //itm.Content = ReadMessageStream(msg.BodyStream);

              itm.Headers = new Dictionary<string, string>();
              if( msg.Properties.Count > 0 )
            msg.Properties.ForEach(p => itm.Headers.Add(p.Key, Convert.ToString(p.Value)));

              return itm;
        }
예제 #15
0
 public AzureMessageQueue(string connectionString, Queue queue, bool deadLetter = false)
   : base(connectionString, queue, deadLetter) {
 }
예제 #16
0
 public QueueItem(Queue queue)
 {
     Queue = queue;
 }
    public virtual void Initialize(Dictionary<string, string> connectionSettings, Queue[] monitorQueues, SbmqmMonitorState monitorState) {
      _connectionSettings = connectionSettings;

      MonitorQueues = monitorQueues;
      _monitorState = monitorState;
    }