コード例 #1
0
        private void Queue_Notification(object sender, OracleAQMessageAvailableEventArgs e)
        {
            try
            {
                var converters =
                    (from m in Queue.DequeueArray(e.AvailableMessages)
                     let ni = m.Payload as OracleNotifyInfoConverter
                              where ni != null
                              select ni).ToList();

                ProcessNotifyConverters(converters);
            }
            catch (Exception ex)
            {
                TraceSource.TraceEvent(TraceEventType.Error, 5138, "{0}: {1} {2}", e.QueueName, e.AvailableMessages, ex);
            }
        }
コード例 #2
0
        private void Queue_Notification(object sender, OracleAQMessageAvailableEventArgs e)
        {
            try
            {
                var converters =
                    (from m in Queue.DequeueArray(e.AvailableMessages)
                     let ni = m.Payload as OracleNotifyInfoConverter
                              where ni != null
                              select ni).ToList();

                ProcessNotifyConverters(converters);
            }
            catch (Exception ex)
            {
                Logger.Error(e.QueueName + ": " + e.AvailableMessages + ex.ToString());
            }
        }
        private void button2_Click(object sender, EventArgs e)
        {
            string _connstring = "Data Source=localhost/NEWDB;User Id=EDZEHOO;Password=PASS123;";

            try
            {
                OracleConnection _connObj = new OracleConnection(_connstring);
                // Create a new queue object
                OracleAQQueue _queueObj = new OracleAQQueue("EDZEHOO.MY_JOBS_QUEUE", _connObj);
                _connObj.Open();
                OracleTransaction _txn = _connObj.BeginTransaction();
                _queueObj.DequeueOptions.Visibility           = OracleAQVisibilityMode.OnCommit;
                _queueObj.DequeueOptions.Wait                 = 10;
                _queueObj.DequeueOptions.ProviderSpecificType = true;
                // Dequeue the messages – take note that you can specify the number of
                // messages you wish to retrieve from the queue
                OracleAQMessage[] _deqMsgs = _queueObj.DequeueArray(2);
                for (int i = 0; i < _deqMsgs.Length; i++)
                {
                    // If you enqueued a byte array, the dequeued object is an
                    // OracleBinary object. You can retrieve the byte array using the
                    // OracleBinary.Value property
                    OracleBinary _payload = (OracleBinary)_deqMsgs[i].Payload;
                    MessageBox.Show("Dequeued Payload Data: " +
                                    ConvertFromByteArray(_payload.Value) + "\n"
                                    + "Dequeued Payload Hex: " +
                                    ConvertToHexString(_payload.Value) + "\n");
                }
                _txn.Commit();
                _queueObj.Dispose();
                _connObj.Close();
                _connObj.Dispose();
                _connObj = null;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }