Azure 服务总线 MessageCountDetails.ActiveMessageCount 不正确
Azure Service Bus MessageCountDetails.ActiveMessageCount is incorrect
我构建了一个服务,每隔几分钟轮询一次 ASB 上的队列和主题。该代码有一个设置 classes 的初始化部分,以及 运行s 在 cron 作业上调用 classes 的某些函数的部分。
我面临的问题是,当 运行 执行此操作时,我在每次计划执行时得到相同的计数。一旦我停止服务并重新运行它,我就会得到更新的号码。
我的解决方案是在每个计划 运行 上重新初始化所有内容。现在的问题是我需要添加一些功能,而这不是一个选项。
下面是我尽量简化的代码(仅供主题使用):
代码的初始化看起来像
var nsmgr = NamespaceManager.CreateFromConnectionString("conn string");
var topics = nsmgr.GetTopics();
foreach (var topic in topics)
{
var subscriptions = nsmgr.GetSubscriptions(topic.Path);
foreach (var subscription in subscriptions)
{
someStaticListOfAlerts.Add(new Alert (subscription.Name,()=> (int)subscription.MessageCountDetails.ActiveMessageCount))
}
}
每隔几分钟调用一次的代码是
foreach (Alert a in someStaticListOfAlerts)
{
a.Refresh();
}
警报的简化class
public class Alert {
public Alert (string name, Func<int> count)
{
// set in local vars
}
public void Refresh()
{
Console.Write ($"{_name} - {_count()}");
}
}
这是 SubscriptionDescription class 的预期行为吗?在刷新 SubscriptionDescription 或订阅方面,我在 MSDN 上找不到太多信息,这让我相信每次调用 MessageDetails.Count 时,它都应该 return 是最新的号码。
我做错了什么?
我遇到了类似的问题,SubscriptionDescription MessageCount 值未更新。
我发现 MessageCount 属性 不会询问服务的实际消息编号,但它会在您创建 SubscriptionDescription 对象时初始化。
要获取更新的消息编号,您必须再次从 NamespaceManager 获取 SubscriptionDescription。
NamespaceManager.GetSubscription("TopicName", "SubscriptionName").MessageCount;
我构建了一个服务,每隔几分钟轮询一次 ASB 上的队列和主题。该代码有一个设置 classes 的初始化部分,以及 运行s 在 cron 作业上调用 classes 的某些函数的部分。
我面临的问题是,当 运行 执行此操作时,我在每次计划执行时得到相同的计数。一旦我停止服务并重新运行它,我就会得到更新的号码。
我的解决方案是在每个计划 运行 上重新初始化所有内容。现在的问题是我需要添加一些功能,而这不是一个选项。
下面是我尽量简化的代码(仅供主题使用):
代码的初始化看起来像
var nsmgr = NamespaceManager.CreateFromConnectionString("conn string");
var topics = nsmgr.GetTopics();
foreach (var topic in topics)
{
var subscriptions = nsmgr.GetSubscriptions(topic.Path);
foreach (var subscription in subscriptions)
{
someStaticListOfAlerts.Add(new Alert (subscription.Name,()=> (int)subscription.MessageCountDetails.ActiveMessageCount))
}
}
每隔几分钟调用一次的代码是
foreach (Alert a in someStaticListOfAlerts)
{
a.Refresh();
}
警报的简化class
public class Alert {
public Alert (string name, Func<int> count)
{
// set in local vars
}
public void Refresh()
{
Console.Write ($"{_name} - {_count()}");
}
}
这是 SubscriptionDescription class 的预期行为吗?在刷新 SubscriptionDescription 或订阅方面,我在 MSDN 上找不到太多信息,这让我相信每次调用 MessageDetails.Count 时,它都应该 return 是最新的号码。
我做错了什么?
我遇到了类似的问题,SubscriptionDescription MessageCount 值未更新。 我发现 MessageCount 属性 不会询问服务的实际消息编号,但它会在您创建 SubscriptionDescription 对象时初始化。
要获取更新的消息编号,您必须再次从 NamespaceManager 获取 SubscriptionDescription。
NamespaceManager.GetSubscription("TopicName", "SubscriptionName").MessageCount;