【问题标题】:Azure Service Bus Read Message QueueAzure 服务总线读取消息队列
【发布时间】:2015-02-20 14:12:23
【问题描述】:

我对 Azure 还很陌生,但正在努力设计或找到一种读取队列中消息的方法。我有以下内容:

  • 云服务
  • 存储帐户
  • 队列

我现在正在苦苦挣扎的是,我可以通过漂亮的图表看到 Portal 给我的消息正在被接收,但我想查看它们的内容,这似乎至少通过 Portal 是不可能的。

所以我开始手动破解一些代码来获取这些消息,但这也不起作用。

    var credentials = new StorageCredentials("account", "key");
    var storageAccount = new CloudStorageAccount(credentials, true);
    var queue = storageAccount.CreateCloudQueueClient();
    var messages = queue.GetQueueReference("orders").GetMessages(100, TimeSpan.FromHours(10), null, null);

我没有得到的是我需要将我的队列与存储关联吗?

干杯,DS。

【问题讨论】:

    标签: c# azure-servicebus-queues


    【解决方案1】:

    这是一个从队列中检索消息的简单示例。首先,您需要创建一个 CloudStorageAccount,以引用特定的存储。其次,您创建一个新的 CloudQueueClient,以便连接到您的 CloudStorageAccount。拥有 CloudQueueClient 后,您可以引用队列并创建它。

            // Your Storage credentials
            var credentials = new StorageCredentials("account", "key");
    
    
            var storageAccount = new CloudStorageAccount(credentials, true);
    
            // Create a new client
            CloudQueueClient queueClient = storageAccount.CreateCloudQueueClient();
    
            // Retrieve a reference to a queue
            CloudQueue queue = queueClient.GetQueueReference("myqueue");
    
            // Create the queue if it doesn't already exist
            queue.CreateIfNotExists();
    
            // Send 10 messages to the queue
            for (int i = 0; i < 10; i++)
            {
                // Create a message and add it to the queue.
                CloudQueueMessage message = new CloudQueueMessage(string.Format("Hello, World {0}", i));
                queue.AddMessage(message);
            }
    
            // Read next 20 messages
            foreach (CloudQueueMessage message in queue.GetMessages(20, TimeSpan.FromMinutes(5)))
            {
                // Reading content from message
                Console.WriteLine(message.AsString);
    
                // Process all messages in less than 5 minutes, deleting each message after processing.
                queue.DeleteMessage(message);
            }
    

    【讨论】:

    • 我的队列中已经有消息显示为传出且成功。我怎样才能访问这些?
    • 还有一个很棒的教程队列:azure.microsoft.com/en-us/documentation/articles/…
    • 同理,删除for循环就可以收到现有的消息了。
    • 是的,我按照该教程进行操作,但我创建了一个云存储帐户,并且正在创建日志。但是,我有一个发送消息的控制台应用程序,我可以看到这些消息正在被接收,但图表只显示时间和日期。
    • 对我来说 queue.GetMessages() 没有返回任何结果,尽管 queue.Exists() 方法返回 true。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 2014-11-03
    • 2017-11-01
    • 1970-01-01
    相关资源
    最近更新 更多