我有这种方法可以很好地从Azure Service Bus中获取订阅中的所有消息。但我想要在过去的60分钟内在那里留言。有没有办法做到这一点?
public void GetMessages()
{
var connectionString = ConfigurationManager.ConnectionStrings["ServiceBus.EndPoint"].ConnectionString;
var topic = ConfigurationManager.AppSettings["ServiceBus.Topic"];
var subscription = ConfigurationManager.AppSettings["ServiceBus.Subscription"];
var client = SubscriptionClient.CreateFromConnectionString(connectionString, topic, subscription, ReceiveMode.PeekLock);
client.RetryPolicy = new RetryExponential(TimeSpan.FromSeconds(0.1), TimeSpan.FromSeconds(5), 5);
var messages = client.PeekBatch(100);
foreach (var msg in messages)
{
string body = msg.GetBody<String>();
}
}
答案 0 :(得分:1)
我想要过去60分钟内的消息
简短的回答是“为什么?”。您可以查看消息,但是当您尝试获取消息时,您不会被允许拥有相同的消息。或任何消息。
许多次多次说过,快乐队列是空队列。如果消息在队列中停留60分钟,那么感觉就会消失。几乎就像队列被用作存储一样。您的处理器都处于脱机状态,一旦它们上线,它们应该处理,无论消息在队列中的时间长短,或者您正在寻找可能应该通过其他服务/以不同方式实现的某些功能。