//TODO: think about moving this just before transaction commit so Oracle can be switched to in memory queue //TODO: which doesn't need to be persisted. invalid notify should only result in more processing public void Notify(OracleNotifyInfoConverter[] notifiers, string target) { if (notifiers == null || notifiers.Length == 0) { return; } var msgs = new OracleAQMessage[notifiers.Length]; var sender = new OracleAQAgent(target); for (int i = 0; i < msgs.Length; i++) { msgs[i] = new OracleAQMessage(notifiers[i]) { SenderId = sender, Recipients = Recipients } } ; Queue.Value.EnqueueArray(msgs); }
private void button3_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.JobsQueue", _connObj); _connObj.Open(); OracleTransaction _txn = _connObj.BeginTransaction(); // Set payload type _queueObj.MessageType = OracleAQMessageType.Raw; // Create a new message object OracleAQMessage _msg = new OracleAQMessage(); String Data = "HELLO, HOW ARE YOU!"; _msg.Payload = ConvertToByteArray(Data); // Enqueue the message _queueObj.EnqueueOptions.Visibility = OracleAQVisibilityMode.OnCommit; // Register the subscriber at the message-level using the // OracleAQMessage.Recipients property OracleAQAgent[] agent = new OracleAQAgent[1]; agent[0] = new OracleAQAgent("RONFRICKE"); _msg.Recipients = agent; _msg.SenderId = new OracleAQAgent("EDZEHOO"); _queueObj.Enqueue(_msg); // Display the payload data that was enqueued MessageBox.Show("Payload Data : " + Data + "\n" + "Payload Hex value : " + ConvertToHexString((byte[])_msg.Payload) + "\n" + "Message ID : " + ConvertToHexString(_msg.MessageId)); _txn.Commit(); _queueObj.Dispose(); _connObj.Close(); _connObj.Dispose(); _connObj = null; } catch (Exception ex) { MessageBox.Show(ex.ToString()); } }
//TODO: think about moving this just before transaction commit so Oracle can be switched to in memory queue //TODO: which doesn't need to be persisted. invalid notify should only result in more processing public void Notify(OracleNotifyInfoConverter[] notifiers, string target) { if (notifiers == null || notifiers.Length == 0) return; var msgs = new OracleAQMessage[notifiers.Length]; var sender = new OracleAQAgent(target); for (int i = 0; i < msgs.Length; i++) msgs[i] = new OracleAQMessage(notifiers[i]) { SenderId = sender, Recipients = Recipients }; Queue.Value.EnqueueArray(msgs); }