当前位置: 首页 > 知识库问答 >
问题:

Azure服务总线ReceiveBatch()的奇怪行为

司马洲
2023-03-14
    SubscriptionClient client = SubscriptionClient.CreateFromConnectionString(connectionString, convoTopic, subName);

    IEnumerable<BrokeredMessage> messageList = client.ReceiveBatch(100);
        foreach (BrokeredMessage message in messageList)
        {
            try
            {
                Console.WriteLine(message.GetBody<string>() + message.MessageId);

                message.Complete();
            }
            catch (Exception ex)
            {
                message.Abandon();
            }
        }

    client.Close();
    MessageBox.Show("Done");

如果我有0条消息要接收,操作需要大约30-60秒来获得messageList(它的计数为0)。我需要这个马上归还。

如果我将代码更改为IEnumerable ,那么问题#2就会消失,因为问题1仍然存在,我必须调用代码两次才能获得所有消息。

我假设问题2是因为我在#3中覆盖了一个缺省超时值(尽管我觉得很困惑,如果消息在那里,它会立即响应,而不需要等待缺省时间)。但是,我不确定为什么在单个ReceiveBatch中从未接收到完整数量的消息。


共有1个答案

陈瀚玥
2023-03-14

让ReceiveBatch()正常工作的方法是做两件事。

  1. 在主题中禁用分区(我不得不为此创建一个新主题,因为创建后无法切换该主题)
  2. 对创建的每个订阅启用批处理,如下所示:
  3. 列表项

SubscriptionDescription sd=新的SubscriptionDescription(topicName,orgSubName);SD.EnableBatchedOperations=true;

 类似资料:
  • 问题内容: 我在go中编写了一个简单的UDP服务器。 当我这样做时,它会打印我发送给它的所有包裹。但是,当客户端停止运行时,它将停止传递到文件。 客户端是发送10k请求的简单程序。因此,在文件中,我大约有50%的已发送软件包。当我再次运行客户端时,文件会再次增长,直到客户端脚本完成。 服务器代码: 这是客户端代码: 问题答案: 如您所怀疑,由于UDP的性质,似乎 UDP数据包丢失 。由于UDP是无

  • 我一直在尝试创建一个客户端来连接我的Azure服务总线队列。我一直在参考此文档: https://docs.microsoft.com/en-us/azure/service-bus-messaging/service-bus-java-how-to-use-queues#send-消息到队列。 我的代码: 在创建客户端时,我遇到以下错误: 通用域名格式。微软蔚蓝色的服务总线。原语。Service

  • 我正在寻找一种解决方案,用于在几个本地数据库之间进行实时数据集成。没有太多的数据转换。我正在评估各种可用的ESB。我认为使用Azure服务总线进行数据集成可以快速开发解决方案。建议使用Azure service bus集成所有内部数据库吗?

  • 我正在尝试使用Xamarin表单订阅Azure服务总线队列。(说实话,我根本不确定是否有可能做到。) 我可以使用一个简单的控制台应用程序接收来自队列的消息,没有任何问题。但是,当我将相同的代码移动到Xamarin时,它在两种不同的场景中失败。 使用Xamarin是否可以正确订阅Azure服务总线队列? 我是不是漏了什么? 我是否有任何其他选择可以将JSON对象从服务总线发送到电话?

  • 我正在尝试通过APIM向服务总线队列发送消息。我已经阅读了几篇类似下面的文章,但运气不佳https://connectedcircuits.blog/2018/09/25/exposing-azure-service-bus-through-apim-generating-a-sas-token-and-setting-the-session-id/ https://www.serverlessn

  • 我使用此url中的示例http://azure.microsoft.com/en-us/documentation/articles/service-bus-java-how-to-use-jms-api-amqp/.我有两个问题: 1、ACS或SAS 连接URL, 用户名和密码来自ACS身份验证,但Azure服务总线已将其身份验证从ACS更改为SAS。它是否也支持SAS身份验证?就像用户名是SA