标签: azureservicebus

如何获取 Azure 服务总线队列中的死信消息计数?

如何获取 Azure 服务总线队列中的死信消息计数?

我可以像这样得到队列中的计数......

var ns = NamespaceManager.CreateFromConnectionString(sbConnectionString);
var queue = ns.GetQueue(queueName);
var count = queue.MessageCount;
Run Code Online (Sandbox Code Playgroud)

但这看起来既包括队列中的消息,也包括关联的死信队列中的消息

我如何区分它们?

azure azureservicebus azure-servicebus-queues

1
推荐指数
1
解决办法
2820
查看次数

无法连接到 Azure 通知中心

我无法连接到 Microsoft Azure 通知中心来管理订阅(获取注册和发送通知)。我有一个简单的 C# 控制台工具并执行NotificationHubClient 方法,出现异常:(401) 不允许..TrackingId:****uid_here*****

使用 Fiddler,我收到以下原始错误消息: HTTP/1.1 401 40103:无效的授权令牌签名

我正在使用带有正确连接字符串(完全共享访问)的程序集 Microsoft.Azure.NotificationHubs v2.16.0.0 和 WindowsAzure.ServiceBus v4.0.0。我从 azure 管理门户复制了确切的连接字符串,并且还尝试连接 ServiceBusExplorer,但这是不可能的,并且使用此工具时出现错误:

Receivera:InternalServiceFault由于内部错误,服务器无法处理请求。有关错误的详细信息,请在服务器上打开 IncludeExceptionDetailInFaults(从 ServiceBehaviorAttribute 或从 <serviceDebug> 配置行为),以便将异常信息发送回客户端,或者根据 Microsoft .NET Framework 打开跟踪SDK 文档并检查服务器跟踪日志。

有人有这样的烦恼吗?

谢了!

更新:谢谢你们。这是一个连接字符串问题。错误在于 SharedAccessKeyName。当前的默认名称是 DefaultFullSharedAccessSignature,我的初始密钥 RootManageSharedAccessKey 不再起作用。我认为天蓝色可以改变它。它不接受与根密钥的连接...或者它被其他人出于其他原因更改。

.net c# azure azureservicebus azure-notificationhub

1
推荐指数
1
解决办法
4074
查看次数

Azure 函数针对同一服务总线队列消息多次运行

我有一个 Azure 函数(基于新的 C# 函数而不是旧的 .csx 函数),每当消息进入 Azure 服务总线队列时就会触发该函数。一旦该函数被触发,它就开始处理服务总线消息。它对消息进行解码、读取大量数据库、更新大量其他数据库等等……这有时可能需要 30 分钟以上。

由于这不是一个时间敏感的过程,30 分钟甚至 60 分钟都不是问题。问题是,与此同时,Azure Function 似乎再次启动并一次又一次地获取相同的消息并重新处理它。这是一个问题,会导致我们的业务逻辑出现问题。

那么,问题来了,我们能否强制Azure函数以单例模式运行呢?或者如果这是不可能的,我们如何更改轮询间隔?

c# singleton azure azureservicebus azure-functions

1
推荐指数
2
解决办法
8465
查看次数

应为 Azure 服务总线中的 AMQP 连接打开哪些端口?

我找到了有关 AMQP 所使用端口的文档:

Azure 服务总线始终要求使用 TLS。它支持通过 TCP 端口 5671 的连接,在进入 AMQP 协议握手之前,TCP 连接首先用 TLS 覆盖,并且还支持通过 TCP 端口 5672 的连接,服务器立即使用 AMQP 规定的模型强制升级到 TLS 的连接。AMQP WebSockets 绑定通过 TCP 端口 443 创建一条隧道,该隧道相当于 AMQP 5671 连接。

其他帖子中有更多详细信息:

它支持通过 TCP 端口 5671 和 TCP 端口 5672 的连接。服务器立即使用 AMQP 规定的模型提供对 TLS 的强制升级。AMQP WebSockets 绑定通过 TCP 端口 443 创建一条隧道,该隧道相当于 AMQP 5671 连接。

我不太明白这两个端口有什么区别。两者都应该始终打开,还是只是所需的其中之一,另一个是一些后备,或者取决于所使用的库。

PS我使用Microsoft.Azure.ServiceBus库来连接

port firewall amqp azureservicebus

1
推荐指数
1
解决办法
2万
查看次数

Microsoft Azure 服务总线/事件中心:没有消息,只有请求

我通过 HTTP POST 将消息发送到我的 Azure 事件中心(与 IoT 中心和 Blob 存储一起使用)。

这些是 HTTP 调用的设置:
http调用

每次我发送消息时,都会收到请求,但没有消息。
天蓝色的会议

我试过了:

  • 不同的 SAS 密钥和所有者
  • 不同的标题以及无标题

找到这个问题后我添加了标题。我还确保检查了权限,正如那里所建议的那样,但它们已经设置为必要的级别。

值得注意的是:由于某种原因,它确实可以在原始设置下工作一次(在第一张图片上以黄色标记)。
在职的

我的问题:
1. 我是否需要手动添加同名的服务总线端点?我假设当您创建事件中心时,它会自动为您创建服务总线。
2. 难道我看到的请求实际上与我发送的消息无关?
3.我这个配置错了吗?

azure azureservicebus azure-eventhub

1
推荐指数
1
解决办法
3573
查看次数

是否可以使用 Azure Functions V2 输出 Message/BrokeredMessage?

文档中不清楚如何输出结构化消息。在我使用过的旧函数中BrokeredMessage,文档说要Message用于 V2 函数,但是没有关于如何使用它的指导。这样对吗:

[FunctionName(nameof(Job))]
public static async Task<IActionResult> Job(
    // ...
    IAsyncCollector<Microsoft.Azure.ServiceBus.Message> serializedJobCollector
)
Run Code Online (Sandbox Code Playgroud)

目标是能够设置一些元数据属性,如 ID,我之前(使用 V1 和BrokeredMessage)做过重复检测,但我不确定这是否正确,或者我需要序列化为字符串或什么...

c# azure azureservicebus azure-functions

1
推荐指数
1
解决办法
511
查看次数

“队列/主题中的死信消息计数。(预览)”的指标名称 Azure

对于我们的持续部署,我们希望为主题中的死信消息设置警报规则。在 Azure 门户上,此指标作为预览功能存在。我们希望通过 ARM 模板创建此警报规则。

我的 ARM 模板参数中是否已有可用于此目的的指标名称?如果没有,什么时候可以在我们的 ARM 模板中使用这个指标?

请参阅此处未列出指标名称: https: //learn.microsoft.com/en-us/azure/azure-monitor/platform/metrics-supported#microsoftservicebusnamespaces

但可以手动创建警报规则并选择此指标: 在此输入图像描述

azure azureservicebus azure-servicebus-topics azure-devops

1
推荐指数
1
解决办法
2135
查看次数

为什么将 NServiceBus 与 AzureServiceBus 一起使用?

AzureServiceBus 和 NServiceBus 对我来说都是新的,我正在探索将 NServiceBus 用于微服务架构。

我知道 NServiceBus 可以使用不同的传输方式,如 Learning、SQLServer、MSMQ、AzureServiceBus 等。我还使用上述传输方式创建了 POC。

我想了解的是,当 AzureServiceBus 可以用作企业服务总线时,将 NServiceBus 与它一起使用有什么好处?

换句话说,为什么我要使用 AzureServiceBus 作为 NServiceBus 中的传输?不只使用 AzureServiceBus 有什么好的理由吗?

architecture nservicebus azureservicebus microservices

1
推荐指数
1
解决办法
292
查看次数

如何使用 Microsoft.Azure.ServiceBus 在订阅上创建 MessageReceiver

我正在尝试用 .NET Standard Microsoft.Azure.ServiceBus 替换 .NET Framework NuGet 包 WindowsAzure.ServiceBus,但我遇到了这个问题。如何为服务总线主题订阅创建 MessageReceiver 的实例?我可以使用以下代码为队列创建它:

var receiver = new MessageReceiver(connectionString, queueName);
var bytes = receiver.ReceiveAsync().Result.Body;
string s = Encoding.UTF8.GetString(bytes);
Console.WriteLine(s);
Run Code Online (Sandbox Code Playgroud)

但 MessageReceiver 没有用于从服务总线主题订阅获取数据的构造函数。

c# azureservicebus .net-standard

1
推荐指数
1
解决办法
1862
查看次数

尝试将托管标识与 Azure 服务总线一起使用

我尝试按照教程对我的服务总线进行身份验证DefaultAzureCredentials,但是,我收到了 401。

我在设置中使用以下代码:

services.AddAzureClients(x =>
{
    x.AddServiceBusClientWithNamespace("myns.servicebus.windows.net")
        .WithCredential(new Azure.Identity.DefaultAzureCredential());
});
Run Code Online (Sandbox Code Playgroud)

然后我像这样调用 SB 客户端:

var sender = client.CreateSender("myqueue");
var message = new ServiceBusMessage(Encoding.UTF8.GetBytes("test"));

await sender.SendMessageAsync(message);
Run Code Online (Sandbox Code Playgroud)

当我打电话时,SendMessageAsync我收到 401 错误:

失败:Azure-Messaging-ServiceBus[82] 为标识符创建发送链接时发生异常:myqueue-578624f3-f732-4a9b-2ab0-9adc01949a5a。错误消息:'System.UnauthorizedAccessException:放置令牌失败。状态代码:401,状态描述:InvalidIssuer:令牌发行者无效。TrackingId:cde3a89c-8108-48d1-8b8f-dacde18e176f, SystemTracker:NoSystemTracker, Timestamp:2021-05-19T07:18:44。

在我运行它之前,我调用az login. 我可以访问命名空间来发送和接收。我的猜测是我需要在服务总线和......之间分配某种权限 - 但由于我将它作为控制台应用程序运行,我使用自己的凭据运行。显然,我不明白有关托管身份的某些内容。

编辑:

根据@juunas 的建议,我尝试了以下操作:

services.AddHostedService<ConsoleHostedService>();
services.AddAzureClients(x =>
{
    //var creds = new Azure.Identity.EnvironmentCredential(); // 1st - EnvironmentCredential authentication unavailable. Environment variables are not fully configured.'
    //var creds = new Azure.Identity.ManagedIdentityCredential(); // 2nd - No Managed Identity endpoint …
Run Code Online (Sandbox Code Playgroud)

azure azureservicebus azure-managed-identity

1
推荐指数
1
解决办法
198
查看次数