我们有一个使用 Azure ServiceBus 的基于微服务的应用程序。我们将其中一项服务(传奇管理器)部署为 .Net Core 控制台应用程序在 docker 容器 (Linux) 中。我们使用 docker-compose 并将一组 2 个容器(包括控制台应用程序)部署到 Azure 容器实例中。
我们使用 MassTransit 与 Azure ServiceBus 一起工作。
控制台应用程序(传奇管理器)通过 MassTransit.BusControlExtensions.Start() 方法启动服务总线。
在这一点上,控制台应用程序(传奇管理器)或多或少已经准备就绪。
旁注:有问题的应用程序(传奇经理)运行自动状态机
现在,如果我们使用 saga 管理器停止或删除容器,然后重新启动它 - 它会停止接收总线消息。
似乎每次重新启动都会创建一个新的传奇管理器实例(线程?) - 而旧实例(线程?)以某种方式持续存在。
即使我们在 Azure 上完全删除了容器实例资源——我们仍然可以观察到总线消息被某些东西拾取......
删除容器组本身后,容器的应用程序仍然存在
有没有办法彻底杀死分离的实例/线程?
有人熟悉 Azure容器实例的这种行为吗?
PS 在所描述的场景中,停止/删除操作总是成功的
PS2:这是使用az container create命令部署有问题的容器组的 yaml 文件:
apiVersion: 2018-10-01
location: westeurope
name: #{groupName}#
properties:
containers:
- name: saga-aci
properties:
image: #{acrLoginServer}#/sagaazure:latest
resources:
requests:
cpu: 1
memoryInGb: 1.5
ports:
- port: 80
- port: 443
- port: 9350
- name: proxymanager-aci
properties:
image: #{acrLoginServer}#/proxymanager:latest
resources:
requests:
cpu: 1
memoryInGb: 1.5
ports:
- port: 22999
- port: 24000
osType: Linux
ipAddress:
type: Public
ports:
- protocol: tcp
port: '80'
#- protocol: tcp
#port: '8080'
- protocol: tcp
port: '22999'
- protocol: tcp
port: '24000'
- protocol: tcp
port: '443'
- protocol: tcp
port: '9350'
imageRegistryCredentials:
- server: #{acrLoginServer}#
username: #{acrName}#
password: #{acrPassword}#
tags: null
type: Microsoft.ContainerInstance/containerGroups
也许这是一个重星政策问题?