У нас есть приложение на основе микросервисов, использующее Azure ServiceBus. Мы развертываем одну из служб (менеджер саг) как консольное приложение .Net Core в контейнере докеров (Linux). Мы используем docker-compose, и группа из 2 контейнеров (включая консольное приложение) развертывается в экземпляре контейнера Azure.
Мы используем MassTransit для работы с Azure ServiceBus.
Консольное приложение (менеджер саги) запускает служебную шину с помощью метода MassTransit.BusControlExtensions.Start ().
Более или менее на этом этапе консольное приложение (менеджер саг) загружено и готово.
Замечание: рассматриваемое приложение (менеджер саг) запускает Automatonymous State Machine
Теперь, если мы остановим или удалим контейнер с менеджером саги, а затем перезапустим его, он перестанет получать сообщения шины.
Похоже, что новый экземпляр диспетчера саг (поток?) Создается при каждом перезапуске, тогда как старый экземпляр (поток?) каким-то образом сохраняется.
Даже когда мы полностью удаляем ресурс Экземпляр контейнера в Azure, мы по-прежнему можем наблюдать, что сообщения шины кем-то перехватываются ...
приложение контейнера все еще живо после удаления самой группы контейнеров
Есть ли способ окончательно убить отдельный экземпляр / поток?
Кто-нибудь знаком с таким поведением экземпляров контейнеров Azure?
PS в описанных сценариях операции остановки / удаления всегда успешны
PS2: вот yaml-файл, используемый для развертывания проблемной группы контейнеров с помощью команды az container create:
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
возможно, это проблема рестарполитики?