c# - Azure 服务总线广播到所有辅助角色实例

标签 c# azure azureservicebus

我正在尝试使用 Azure 服务总线将消息从 Web 角色广播到单个辅助角色的所有实例。这是我用来接收消息的代码:

// Create the topic if it does not exist already
            string connectionString = CloudConfigurationManager.GetSetting("Microsoft.ServiceBus.ConnectionString");
        var namespaceManager = NamespaceManager.CreateFromConnectionString(connectionString);

        // Configure Topic Settings
        TopicDescription td = new TopicDescription("CommandTopic");
        td.MaxSizeInMegabytes = 5120;
        td.DefaultMessageTimeToLive = new TimeSpan(0, 0, 1);

        if (!namespaceManager.TopicExists("CommandTopic"))
        {
            namespaceManager.CreateTopic(td);
        }

        Random rand = new Random();
        double randNum = rand.Next();

        if (!namespaceManager.SubscriptionExists("CommandTopic", "CommandSubscription"+randNum))
        {
            namespaceManager.CreateSubscription("CommandTopic", "CommandSubscription" + randNum);
        }

        Client = SubscriptionClient.CreateFromConnectionString(connectionString, "CommandTopic", "CommandSubscription" + randNum, ReceiveMode.ReceiveAndDelete);
        Trace.WriteLine("SUBSCRIPTION: COMMANDSUBSCRIPTION"+randNum);

为了为每个辅助角色实例创建单独的订阅(以便所有实例都接收主题中的消息),我必须使用随机数。有没有办法使用实例的某些 ID 而不是随机数。有Instance.Id,但它太长,无法用作订阅名称的参数。有没有不使用子字符串的较短版本?另外,为每个实例创建单独的订阅是正确的方法吗?以前,所有实例都订阅了同一订阅,因此只有 1 个实例获取消息并将其从订阅中删除。

最佳答案

尝试将辅助角色的虚假 InternalEndpoint 添加到您的配置中。这可确保填充角色实例的列表。

关于c# - Azure 服务总线广播到所有辅助角色实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15367701/

相关文章:

c# - 如何在 Unity android 项目中制作自定义 firebase 事件?

azure - 如何在 Azure AD 加入设备上的任务计划程序中选择用户

c# - 来自计时器触发器的 Azure 函数输出服务总线绑定(bind)

c# - nHibernate 复杂连接

C#:构造函数调用的顺序

c# - Azure KeyVault 抛出 401 未经授权的错误,但响应仍然具有 200 状态和正确的数据

c# - Azure 功能防火墙

azure - 使用 Azure 服务总线通过端口 80 发送消息

azure - 多次读取 BrokeredMessage 正文

c# - Windows 8 商店应用程序 C++ 文件访问