如果我配置了服务总线代理消息接收器。并且由于任何原因它都会失败。我呼吁它
message.abandon();
Run Code Online (Sandbox Code Playgroud)
但这意味着该消息将再次返回到队列/订阅中。
我可以配置一个超时,之后队列中可以处理相同的消息。
例如:如果队列中只有一条消息。如果它失败了,那么继续每秒或每分钟处理它是不好的。如果我配置一些东西,可以确保失败/放弃的消息仅在 30 分钟后重新出现。那么它是有用的。
有什么建议么?
我试图从 ASP.NET Core 2.0 控制台应用程序监视总队列深度和 DeadLetterMessages 队列深度。我看到过有关使用 NamespaceManager 类的参考,如下所示:
var ns = NamespaceManager.CreateFromConnectionString(sbConnectionString);
var queue = ns.GetQueue(queueName);
var count = queue.MessageCount;
var deadletterMessagesCount = queue.MessageCountDetails.DeadletterMessageCount;
Run Code Online (Sandbox Code Playgroud)
(摘自如何获取 Azure 服务总线队列中的死信消息计数?)
但NamespaceManager位于Microsoft.ServiceBus中,与ASP.NET Core不兼容。
关于如何获取消息计数有什么建议吗?
我目前正在 C# 中使用 Azure 服务总线。我遇到的问题是消息没有按顺序读取(先进先出)。我一直在尝试使用会话来纠正消息读取的顺序。有没有办法确保会话和会话中的消息按先进先出的顺序读取?
我正在尝试开始使用 Azure ServiceBus,但文档之神反对我。我正在关注这篇 MS 文章,它说这段代码将允许我发送消息......
class Program
{
static string connectionString = "<NAMESPACE CONNECTION STRING>";
static string queueName = "<QUEUE NAME>";
static async Task Main(string[] args)
{
await SendMessageAsync();
}
static async Task SendMessageAsync()
{
// create a Service Bus client
ServiceBusClient client = new ServiceBusClient(connectionString);
// create a sender for the queue
ServiceBusSender sender = client.CreateSender(queueName);
// create a message that we can send
ServiceBusMessage message = new ServiceBusMessage("Hello world!");
// send the message
await sender.SendMessageAsync(message);
Console.WriteLine($"Sent …
Run Code Online (Sandbox Code Playgroud) connection-string azure azureservicebus azure-servicebus-queues