首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于Web后台任务的暂存槽处理消息

用于Web后台任务的暂存槽处理消息
EN

Stack Overflow用户
提问于 2021-03-25 14:20:37
回答 2查看 372关注 0票数 0

我使用Azure应用程序服务计划托管web应用程序,该应用程序处理服务总线主题消息。我正在使用Azure函数应用程序,它也有http触发器来执行事件网格数据。Web ()和Function ()都有生产中的暂存槽。

在交换插槽的时候,我观察到,把stgaing槽换成web应用程序正在处理消息。这是预期的行为吗?对于功能应用程序暂存槽,我没有观察到这种行为。为什么会这样?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-25 18:56:42

在每个名为"IsStaging“的插槽中添加一个应用程序设置,其值为真值和假值,然后当应用服务升温时(启动或方法消耗消息)停止请求,这样就不会从暂存槽中使用消息。

代码语言:javascript
复制
                if (CurrentConfiguration.IsStaging)
                {
                   logger.LogWarn("Staging slot cannot consume messages");
                   return;
                }

WebJob更新

代码语言:javascript
复制
        static void Main(string[] args)
        {
            JobHost host = CreateJobHost();
            if (CurrentConfiguration.IsStaging)
            {
                host.Call(typeof(Program).GetMethod("DoStagingInfiniteLoop"));
            }
            else
            {
                host.Call(typeof(Program).GetMethod("ProcessQueue"));
            }
        }


        private static JobHost CreateJobHost()
        {
            JobHostConfiguration jobHostConfig = new JobHostConfiguration();
            jobHostConfig.DashboardConnectionString = "DashboardCS";
            jobHostConfig.StorageConnectionString = "StorageCS";

            var JobHost = new JobHost(jobHostConfig);
            return JobHost;
        }


        [NoAutomaticTrigger]
        public static void DoStagingInfiniteLoop(TextWriter logger, CancellationToken token)
        {
            const int LOOP_TRACE_INTERVAL = 10000;
            ProcessLogger.WriteTrace("This is a staging environment, waiting...");
            while (true)
            {
                Task.Delay(LOOP_TRACE_INTERVAL).Wait(token);
            }
        }

        [NoAutomaticTrigger]
        public static void ProcessQueue(TextWriter logger, CancellationToken token)
        {
            //Your processing code here
        }
票数 1
EN

Stack Overflow用户

发布于 2021-03-25 16:04:49

请确保停止插槽,否则它将处于运行状态(可以接收消息)。如果你不想让它收到信息,你应该停止它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66801456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档