コード例 #1
0
        /// <summary>
        /// Initializes a MessageQueue with binary formatter, with the input path and input OnReceive handler.
        /// </summary>
        /// <param name="path">   </param>
        /// <param name="handler">Method to call when the MQueue Receives a Message</param>
        /// <returns></returns>
        public static MessageQueue CreateMQ(string path, ReceiveCompletedEventHandler handler)
        {
            MessageQueue qMsg = null;

            try
            {
                if (!MessageQueue.Exists(path))
                {
                    MessageQueue.Create(path, true);
                }
                qMsg           = new MessageQueue(path, QueueAccessMode.SendAndReceive);
                qMsg.Path      = path;
                qMsg.Formatter = new System.Messaging.BinaryMessageFormatter(System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple, System.Runtime.Serialization.Formatters.FormatterTypeStyle.TypesAlways);
                qMsg.MessageReadPropertyFilter.DestinationQueue     = true;
                qMsg.MessageReadPropertyFilter.Extension            = true;
                qMsg.MessageReadPropertyFilter.IsFirstInTransaction = true;
                qMsg.MessageReadPropertyFilter.IsLastInTransaction  = true;
                qMsg.MessageReadPropertyFilter.LookupId             = true;
                qMsg.MessageReadPropertyFilter.Priority             = true;
                qMsg.MessageReadPropertyFilter.SentTime             = true;
                qMsg.MessageReadPropertyFilter.SourceMachine        = true;
                qMsg.MessageReadPropertyFilter.TimeToBeReceived     = true;
                qMsg.MessageReadPropertyFilter.TimeToReachQueue     = true;
                if (handler != null)
                {
                    qMsg.ReceiveCompleted += new ReceiveCompletedEventHandler(handler);
                }
            }
            catch (SystemException eX)
            {
            }
            return(qMsg);
        }
コード例 #2
0
        public IMessage Receive()
        {
            IMessage nmsMessage = null;

            if (messageQueue != null)
            {
                Message message;

                try
                {
                    message = messageQueue.Receive(zeroTimeout);
                }
                catch
                {
                    message = null;
                }

                if (null == message)
                {
                    ReceiveCompletedEventHandler receiveMsg =
                        delegate(Object source, ReceiveCompletedEventArgs asyncResult) {
                        message = messageQueue.EndReceive(asyncResult.AsyncResult);
                        pause.Set();
                    };

                    messageQueue.ReceiveCompleted += receiveMsg;
                    messageQueue.BeginReceive();
                    pause.WaitOne();
                    messageQueue.ReceiveCompleted -= receiveMsg;
                }

                nmsMessage = ToNmsMessage(message);
            }

            return(nmsMessage);
        }
コード例 #3
0
 public void StartReceiving(ReceiveCompletedEventHandler receiveCompletedEventHandler)
 {
     _messageQueue.ReceiveCompleted += receiveCompletedEventHandler;
     _messageQueue.BeginReceive();
 }
コード例 #4
0
        public MessageListener StartListener(string nombreCola, ReceiveCompletedEventHandler MQueueReceiveEventHandler)
        {
            MessageListener MsgListener;

            MessageQueue.EnableConnectionCache = false;
            MessageQueue cola = new MessageQueue(PRIVATE_QUEQUE + nombreCola);

            EstablecerFormateador(cola);

            cola.ReceiveCompleted += MQueueReceiveEventHandler;

            IAsyncResult MQResult = cola.BeginReceive(TimeSpan, cola);

            MsgListener.MQueue = cola;
            MsgListener.AsyncResult = MQResult;
            return MsgListener;
        }