当我尝试从一个简单的控制台应用程序(不是在调试模式)向我的Azure Service Bus队列发送1000条简单消息时,使用http模式需要90秒.
使用标准的nettcp模式需要70秒.
其他人的速度也是吗?我预计它会更快,但也许这是正确的?
在 Microsoft Azure 中,在服务总线下,您可以看到不同队列/主题等的活动图。
该图显示了各种不同的行,例如传入消息、传出消息、成功请求等。
什么是请求?什么是Message?
请求似乎是不断发生的,并且通常比消息的数量(以主题为单位)大得多。即使侦听队列的服务器数量保持不变 - 有时请求数量会急剧增加而消息数量没有任何变化。

我正在试验 Windows Azure 中继服务总线和 WCF...我有一个带有 3 个侦听器的服务总线,有没有办法找出有关这三个侦听器指向何处的任何信息?
因为我只启动了一个 WCF 服务,所以我看到 3 个听众有点奇怪,所以我想知道是什么......
谢谢!
在Azure的事件概述枢纽条规定如下:
分区数在事件中心创建时指定,并且必须介于8和32之间.分区是一种数据组织机制,与使用应用程序所需的下游并行度相关,而不是与事件中心吞吐量相关.这使得Event Hub中分区数量的选择与您期望拥有的并发读取器数量直接相关.创建事件中心后,分区计数不可更改; 您应该根据长期预期规模来考虑这个数字.您可以通过联系Azure Service Bus团队来增加32分区限制.
由于在初始创建后无法更改事件中心上的分区数,为什么不总是将其配置为最大分区数,32?这样做我没有看到任何定价影响.有一些表现权衡吗?
另外,作为另一方面,我似乎能够创建一个少于8个分区的事件中心.文章说它必须在8-32之间.不知道为什么会这么说......
我正在使用代码片段将消息发送到服务总线主题.
try
{
// sb is instance of ServiceBusConfig.GetServiceBusForChannel
await sb.SendAsync(message);
}
catch (Exception ex)
{
this.logger.LogError(
"chanel",
"An error occurred while sending a notification: " + ex.Message,
ex);
throw;
}
Run Code Online (Sandbox Code Playgroud)
和实施是
public async Task SendAsync(BrokeredMessage message)
{
if (this.topicClient == null)
{
this.topicClient = TopicClient.CreateFromConnectionString(this.primaryConnectionString, this.topicPath);
this.topicClient.RetryPolicy = this.retryPolicy;
}
await this.topicClient.SendAsync(message);
}
Run Code Online (Sandbox Code Playgroud)
错误:-
"ErrorCode,12005,Message,""发送通知时发生错误:操作未在分配的超时00:01:00内完成.分配给此操作的时间可能是较长超时的一部分. .在异常类型和适当的异常处理,异常"" Microsoft.ServiceBus.Messaging.MessagingException更多信息:该操作没有的00:01:00在规定的超时时间内完成分配给此操作的时间可能是一部分更长的超时.
有关异常类型和正确异常处理的更多信息
c# azure azureservicebus asp.net-web-api azure-servicebus-topics
对于此方法:
public static SubscriptionClient CreateFromConnectionString(string connectionString, string topicPath, string name)
Run Code Online (Sandbox Code Playgroud)
什么是topicPath?
MSDN表示它是“主题的完整路径名”。
什么是路径名?
有一些代码示例,但是我还没有找到一个可以解释这个小细节的示例。
假设我有一组List<BrokeredMessage>消息要批量发送到Azure Service Bus.
集合大小是任意的,因此所有消息的总大小可能超过Service Bus强加的256k的限制.如何以最佳方式将其拆分为较小的块?
这个任务似乎很简单,但似乎不是:BrokeredMessage在我尝试发送它之前,每个的大小都是未知的.Sizeproperty只返回消息体的大小,没有头和其他开销.
如果我尝试发送每条250字节的1000条消息,我会得到MessageSizeExceededException.问题是,现在我甚至无法重试,因为消息已被消耗,所以我必须重新创建所有BrokeredMessage的消息.
因此,我现在看到的唯一方法是在发送大量小消息时对批量大小非常保守,这可能会花费我一些吞吐量.
有更可靠和/或更干净的方式吗?
我打开一个全新的azure函数项目,我的包是:
我使用servicebustrigger,我的功能代码是基本的:
public static class Function1
{
[FunctionName("OrderPusherFunction")]
public static Task Run([ServiceBusTrigger("orders","orderpusher", Connection ="ServiceBus")]
string myQueueItem, TraceWriter log)
{
log.Info($"C# Queue trigger function processed: {myQueueItem}");
return Task.CompletedTask;
}
}
Run Code Online (Sandbox Code Playgroud)
我还有:Azure Functions Core Tools(2.0.1-beta.22)和Function Runtime Version:2.0.11415.0
当我运行时,我得到" 绑定类型'serviceBusTrigger'未注册 "错误,并且该函数不会被触发.有人有想法吗?这在我看来是一个基本设置..
我正在尝试使用服务总线绑定输出为JavaScript Azure Function中的服务总线消息设置元数据。不幸的是,绑定似乎只支持身体。
查看这些文档,我发现您可以通过以下方式在服务总线触发器中访问此信息,context.bindingData但是我没有看到用于服务总线输出的任何相应接口。
从理论上讲,相对于消息和接收者,蔚蓝服务总线队列看起来是一对一的。只是想知道队列中是否可以有多个侦听器。
如果为1:1,是否意味着要实现竞争性的消费者模式,我们就不能使用队列,而主题是唯一的选择吗?