如何在特定时间从服务总线获取消息?

时间:2016-09-27 14:22:48

标签: c# visual-studio azureservicebus

我有这种方法可以很好地从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>();
        }
    }

1 个答案:

答案 0 :(得分:1)

  

我想要过去60分钟内的消息

简短的回答是“为什么?”。您可以查看消息,但是当您尝试获取消息时,您不会被允许拥有相同的消息。或任何消息。

许多次多次说过,快乐队列是空队列。如果消息在队列中停留60分钟,那么感觉就会消失。几乎就像队列被用作存储一样。您的处理器都处于脱机状态,一旦它们上线,它们应该处理,无论消息在队列中的时间长短,或者您正在寻找可能应该通过其他服务/以不同方式实现的某些功能。