gpt4 book ai didi

Azure 服务总线丢弃消息?

转载 作者:行者123 更新时间:2023-12-01 10:01:39 25 4
gpt4 key购买 nike

我正在尝试在 Azure 中构建一个简单的 Web API REST 服务,并在后端使用服务总线队列工作线程。我可以很好地从 Web API 向工作人员发送一条消息。然而,我试图发送更多消息只是为了看看一切如何运作。因此,我创建了一个简单的 Controller ,如下所示:

for (int i = 0; i < 100; i++)
{
var msg = new BrokeredMessage("Ping");
BioConnector.QueueConnector.OrdersQueueClient.Send(msg);
}

当我调用 Controller 时,我只收到工作人员收到的大约 1/2 左右的消息。其余的似乎都被放弃了。

最佳答案

我在使用发布的示例代码 here 时仅获取大约一半的消息时遇到问题,所以我写了自己的测试代码。我已经尝试过超过 100 个队列消息,并且始终具有 100% 的发送/接收奇偶校验。也许您的代码也有类似的问题。

  1. 创建一个新的 C# 控制台项目。
  2. 添加对位于C:\Program Files\Microsoft SDKs\Windows Azure.NET SDK\2012-06\ref\Microsoft.ServiceBus.dll中的 Microsoft.ServiceBus 程序集的引用。
  3. 在 app.config 中,使用您自己提供的值将其更改为:

    <appSettings>
    <add key="Microsoft.ServiceBus.ConnectionString" value="Endpoint=sb://blahblah.servicebus.windows.net/;SharedSecretIssuer=owner;SharedSecretValue=pDk0b....=" />
    </appSettings>
  4. 添加这些 using 指令:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Xml;
    using System.Xml.Linq;
    using Microsoft.ServiceBus;
    using Microsoft.ServiceBus.Messaging;
    using System.Configuration;
    using System.Threading;
  5. 将代码方法更改为以下内容:

    class Program
    {
    static void Main(string[] args)
    {
    string connectionString = ConfigurationSettings.AppSettings["Microsoft.ServiceBus.ConnectionString"];
    var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);
    QueueDescription queueDesc = new QueueDescription("TestQueue");
    if (!namespaceManager.QueueExists(queueDesc.Path))
    {
    namespaceManager.CreateQueue(queueDesc);
    }
    QueueClient topicClient = QueueClient.CreateFromConnectionString(connectionString, queueDesc.Path);
    int sentMsgCount = 0;
    int recdMsgCount = 0;

    for (int i = 0; i < 100; i++)
    {
    BrokeredMessage msg = new BrokeredMessage("Test message " + i);
    topicClient.Send(msg);
    sentMsgCount++;
    Console.WriteLine("Sent Message: " + msg);
    }

    QueueClient subClient = QueueClient.CreateFromConnectionString(connectionString, queueDesc.Path);

    bool moreMessages = true;
    while (moreMessages)
    {
    BrokeredMessage recdMsg = subClient.Receive(TimeSpan.FromSeconds(3));
    if (recdMsg != null)
    {
    Console.WriteLine("Received Message: " + recdMsg);
    recdMsgCount++;
    recdMsg.Complete();
    }
    else
    {
    moreMessages = false;
    }
    }
    Console.WriteLine("# of sent msgs: " + sentMsgCount + ", # of rec'd msgs: " + recdMsgCount);
    Console.Read();
    }
    }

关于Azure 服务总线丢弃消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15319327/

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