我只是想知道是否有人曾经发送/发布过 100 万以上使用 MassTransit 向 Azure
目前,一次发送/发布一条消息的过程非常缓慢(大约 25K 条消息需要 10 分钟)。无论如何,我看不到批量发送消息,但我可能会丢失一些东西。
我确实看到Azure支持SendBatch,它的总体消息大小限制为256K,但是我们有很多小消息需要出去,我想知道是否有人扩展了MassTransit来支持此功能,或者有其他一些关于如何提高绩效的建议。
所有的建议都得到了极大的重视。
我正在尝试使用流量管理器来处理不同区域中的 2 个服务总线,以提供弹性,而不必向两个区域发送重复的消息,如https://learn.microsoft.com/en-us/azure/service-bus中所述-消息/服务总线中断灾难
我希望使用服务总线 REST API 使流量管理器查询 URL namespace.servicebus.windows.net/ 进行运行状况检查,因为它通常会返回 200,并且如果某个区域面临中断,可能会无法连接。
由于选择“Azure 终结点”时,流量管理器中的下拉菜单拒绝让我选择任意 URL,因此我尝试使用上述 URL 来选择“外部终结点”,但不会创建终结点。它失败并显示“无法将配置更改保存到流量管理器配置文件错误:域名 xxx 无效”。
如果 url xxx.servicebus.windows.net/ 可以从外部解析,为什么流量管理器不允许这样做?
我目前正在评估使用服务总线和 azure 函数来触发一些需要通过下游 api 调用完成的工作。这一切都是相当标准的,只是我没有很好地处理当下游系统过载和/或将标头返回到节流阀时会发生什么(即每分钟最大调用数/等)。我们似乎没有对队列触发器的强制限制进行任何动态控制。
我知道我们可以手动设置最大并发数,但这不一定能解决问题,因为我们无法控制下游系统,并且需要考虑它随时可能离线或缓慢。
此外,我们可以创建消息,以便它们被安排以一定的速率流入,但下游系统仍然可能饱和或返回速率限制。
选项1:
假设消费计划,从解决方案的角度来看,这是我能想到的一种方法:
基本上,当下游系统饱和时,队列 1 成为队列 2 和队列 3 的控制器。
选项2:
我们可以克隆消息并在将来重新排队,并继续这样做,直到它们都是进程。保留一个队列并重新排队,直到我们处理完它。
选项 3:
假设我们有自己的应用程序计划,该计划是专用的而不是消耗的,我想我们可以Thread.Sleep在功能接近速率限制或下降时继续重试。这可能是最大并发数、实例和速率限制的计算。我不会在消费计划中考虑这一点,因为睡眠可能会大幅增加成本。
我想知道我是否缺少一些简单的方法来处理下游饱和或限制队列触发器(可能是服务总线或存储队列)
编辑:我想补充一点,我将 100 万条消息注入到发送时安排的服务总线队列中。我观察到 Azure Function(消耗计划)规模达到了大约 1500/秒,这提供了一个很好的指标。我不确定那些专注的人会表现如何。
看起来主机文件可以即时修改并且设置立即生效。尽管这适用于所有功能,但它可能适用于我的特定情况(更新设置并每隔一分钟左右再次检查一次,具体取决于速率限制)。
azure azureservicebus azure-servicebus-queues azure-functions
是否可以使用 AZ CLI 获取 Azure 服务总线primaryConnectionString?
输入参数:
我正在使用Azure 事件中心。我计划发送事件并使用SendBatchAsync。我看到事件中心的限制为256KB (无论是单独发送还是批量发送)
那么,如果我的数据 > 256KB ,处理此问题的最佳实践是什么?我们是否应该单独发送消息(这将保证消息小于 256KB)?
另外,如何将事件拆分为 256KB 块并将其发送到事件中心?我查看了 Azure 文档,发现他们建议使用EventHubClient.CreateBatch,但我没有看到足够的示例。有人可以提供一些模型或示例或步骤,以了解我们如何最终拆分为 256KB 和 SendBatchAsync
这是我所做的(但不考虑 256KB 限制)
await myEventHubClient.SendBatchAsync(
events.Select(
iEvent =>
new EventData(
Encoding.UTF8.GetBytes(JsonConvert.SerializeObject( iEvent ) ) ) ) );
Run Code Online (Sandbox Code Playgroud) 我尝试创建一个 ServiceBusTrigger 函数,就像在 .NET Framework 中一样:
C:\Users\foo\test2>func new --language C# --template ServiceBusTrigger --name MyServicebusTrigger
Select a language: C#
Select a template: ServiceBusTrigger
Can't find template "ServiceBusTrigger" in "C#"
Run Code Online (Sandbox Code Playgroud)
我找不到任何有关包含哪些模板的文档。不是有吗?
我们在西欧地区使用 Azure 服务总线。
当我查看指标以调查重复问题时,我注意到我们存在大量“服务器错误”。这似乎占了请求的近 50%。
现在,微软关于服务器错误含义的信息并不多,除了说它是“内部服务总线错误”(参见https://learn.microsoft.com/en-us/azure/service-bus-messaging /service-bus-metrics-azure-monitor)
我的问题: 我需要担心吗?目前我在西欧仍然可以依赖 Service Bus(上个月该地区的 Service Bus 出现了一些问题)。
这是什么意思?我该如何解决?
提前谢谢
azure azureservicebus azure-servicebus-queues azure-servicebus-topics
我参考此示例来使用Azure服务总线 https://github.com/Microsoft/azure-spring-boot/tree/master/azure-spring-boot-samples/azure-servicebus-spring-boot-sample
我能够让示例正常工作,没有任何问题。
1-作为它的扩展,我现在在同一服务总线命名空间中创建了多个队列。我想读取消息并将其发布到每个队列。通过 azure-servicebus-spring-boot-starter 项目,我如何指定要使用的多个队列。
2-我想每 10 秒听一次队列。对于同样的情况,我在 sprint 启动应用程序中启用了调度。在每 10 秒调度一次的组件方法中,现在我正在注册消息处理程序。
queueClient.registerMessageHandler(new MessageHandler(),options);
Run Code Online (Sandbox Code Playgroud)
重复注册会有问题吗?如果是这样,如何编码相同。
谢谢
您对使用 Azure 服务总线进行消息传递的 Java 应用程序进行集成测试的方法是什么?
我不想在每个 CI 构建中都使用云服务。更愿意生成 Azure 服务总线的嵌入式版本或以某种方式模拟它。或者,我正在考虑对 AMQP/JMS 进行编码,并在 CI 构建期间使用嵌入式 ActiveMQ 来模拟 Azure 服务总线。谢谢。
java continuous-integration integration-testing azure azureservicebus
我已经从 GIT 下载了 Service Bus Explorer。我能够连接到服务总线队列和主题。但是当我尝试连接到事件中心时,我遇到了一些问题。错误--> 异常:System.UnauthorizedAccessException:远程服务器返回错误:(401) 未经授权。索赔为空。没有选项可以通过任何索赔。IN连接字符串也没有这样的参数。
最初它可以工作,但在我创建新的事件中心工具后停止工作
Failed to retrieve EventHub entities. Exception: System.UnauthorizedAccessException: The remote server returned an error:
(401) Unauthorized. claim is empty. TrackingId:92ab37f6-452a-48c4-ae20-af7f0e64915b_G25, SystemTracker:ehn-g3ms-tutor.servicebus.windows.net:$Resources/EventHubs, Timestamp:2019-07-11T11:08:52 ---> System.Net.WebException: The remote server returned an error: (401) Unauthorized
Run Code Online (Sandbox Code Playgroud) azureservicebus ×10
azure ×5
c# ×2
.net-core ×1
azure-cli ×1
azure-cli2 ×1
java ×1
masstransit ×1
servicebus ×1
spring-boot ×1