У меня есть консольное приложение c #, которое получает данные и отправляет их в другую программу для дальнейшей обработки.
В C # я снимаю AQ с оракула и получаю данные отлично. Но я хотел бы отправить ответное сообщение в Oracle, чтобы сказать, прошла ли «отправка».
// Udt works fine
public class XALOUTPUT_T : IOracleCustomType, INullable {...}
public static void listen(OracleConnection conListen)
{
// Create queue
OracleAQQueue queueListen = new OracleAQQueue("XALOUTPUT_Q", conListen);
try
{
queueListen.Listen(null);
queueListen.MessageType = OracleAQMessageType.Udt;
queueListen.UdtTypeName = "XALOUTPUT_T";
OracleTransaction txn = conListen.BeginTransaction();
queueListen.DequeueOptions.Visibility = OracleAQVisibilityMode.OnCommit;
queueListen.DequeueOptions.Wait = 5;
OracleAQMessage deqMsg = queueListen.Dequeue();
XALOUTPUT_T result = (XALOUTPUT_T)deqMsg.Payload;
txn.Commit();
Task<WebResponse> task = SendData( result.TEKST.Value,
result.BESKEDTYPE, result.EMAIL, result.FILNAVN);
}
finally
{
queueListen.Dispose();
listen(conListen);
}
}
static async Task<WebResponse> SendDataToLasernet(string tekst, string beskedtype, string email, string filnavn)
{
var request = System.Net.WebRequest.Create(" xxx");
string xyz = "<xml><tekst>" + tekst + "</tekst><jobinfo><MailTo>" + email + "</MailTo><FileName>" + filnavn + "</FileName></jobinfo></xml>";
Console.WriteLine(xyz);
var data = Encoding.ASCII.GetBytes(xyz);
request.Method = "POST";
request.ContentType = "application/xml";
request.ContentLength = data.Length;
using (var stream = request.GetRequestStream())
{
stream.Write(data, 0, data.Length);
}
return await request.GetResponseAsync();
}
Я хотел бы вернуть task.exception (если оно есть) в Oracle AQ.
И вставьте его в AdvancedQueue_QT
У вас есть идеи, как вернуть что-то в AQ?