如何在特定时间从服务总线获取消息?
How can I get messages from Services Bus in a specific time?
我有这种方法非常适合从我在 Azure 服务总线中的订阅获取所有消息。但我想要过去 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>();
}
}
I want the messages that have been in there for the last 60 minutes
简短的回答是 "why?"。您可以查看这些消息,但是当您尝试获取它们时,不会保证您会收到相同的消息。或者任何消息。
快乐队列是空队列,这句话已经说过很多次了。如果一条消息在队列中等待 60 分钟,就会感觉有些不对劲。几乎就像队列用作存储一样。要么你的处理器全部脱机,一旦它们联机,它们就应该处理,而不管消息在队列中的时间有多长,或者你正在寻找一些可能应该通过其他 service/in 不同方式实现的功能。
我有这种方法非常适合从我在 Azure 服务总线中的订阅获取所有消息。但我想要过去 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>();
}
}
I want the messages that have been in there for the last 60 minutes
简短的回答是 "why?"。您可以查看这些消息,但是当您尝试获取它们时,不会保证您会收到相同的消息。或者任何消息。
快乐队列是空队列,这句话已经说过很多次了。如果一条消息在队列中等待 60 分钟,就会感觉有些不对劲。几乎就像队列用作存储一样。要么你的处理器全部脱机,一旦它们联机,它们就应该处理,而不管消息在队列中的时间有多长,或者你正在寻找一些可能应该通过其他 service/in 不同方式实现的功能。