gpt4 book ai didi

c# - 如何从队列中删除消息?

转载 作者:太空狗 更新时间:2023-10-29 20:04:40 25 4
gpt4 key购买 nike

我有消息卡在队列中,我正在寻找一种方法来以编程方式删除它们。

如果队列已放置超过 x 天,是否有办法从队列中删除消息?我可以像这样连接和删除队列,但不确定如何删除个别消息。

MessageQueue queue = new MessageQueue(@".\private$\SomeTestName");
//queue.Purge(); //deletes the entire queue
try
{
// Peek and format the message.
Message m = myQueue.Peek();

// Display message information.
Console.WriteLine("Sent time {0}", m.SentTime);
Console.WriteLine("Arrived time {0}", m.ArrivedTime);
}

最佳答案

没有可用于执行此操作的 API。但是你可以使用

使用枚举的一个好处是,如果队列有很多消息,读取所有消息可能会导致 OutOfMemoryException。使用枚举器,您一次只能读取 1 条消息,并且可以重复使用为其分配的内存。

另一个提高性能的技巧是指定要读取的属性,这样如果消息正文很大并且您对内容不感兴趣,您可以禁止读取它。

var enumerator = _queue.GetMessageEnumerator2();  // get enumerator
var staleDate = DateTime.UtcNow.AddDays(-3); // take 3 days from UTC now
var filter = new MessagePropertyFilter(); // configure props to read
filter.ClearAll(); // don't read any property
filter.ArrivedTime = true; // enable arrived time
_queue.MessageReadPropertyFilter = filter; // apply filter

// untested code here, edits are welcome
while (enumerator.Current != null)
if(enumerator.Current.ArrivedTime.Date >= staleDate)
enumerator.RemoveCurrent();
else
enumerator.MoveNext();

关于c# - 如何从队列中删除消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23227194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com