C#出队AQ以及如何将错误消息返回到Oracle AQ

时间:2019-05-13 11:11:49

标签: c# .net oracle advanced-queuing

我有一个c#控制台应用程序,该应用程序正在获取数据并将其发送到另一个程序进行进一步处理。 在C#中,我从oracle出队,并完美地获取数据。但是我想向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?

0 个答案:

没有答案
相关问题