sqs-operator v0.1.7: web UI sidecar, auto-create-queues, fix A06 long polling
- api/v1alpha1: добавлены поля EnableUI, AutoCreateQueues в QueueServiceSpec - elasticmq_config.go: GenerateConfig принимает autoCreateQueues, добавляет HOCON блок - controller.go: sidecar elasticmq-ui (port 3000), ensureIngressUI, ensureService UI port - test_v2_suite.sh: A06 теперь PASS — PurgeQueue перед long polling тестом - CRD обновлён: make install применён в кластере Test run v0.1.7: 35 PASS / 3 FAIL / 4 WARN / 2 SKIP(WONTFIX)
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
// Изменён: 2026-04-07
|
||||
// Изменён: 2026-04-08
|
||||
// elasticmq_config.go — генератор HOCON конфигурации для ElasticMQ.
|
||||
// Каждый тенант получает уникальный конфиг: свой context-path, accountId, persistence.
|
||||
// Конфиг монтируется в pod как ConfigMap → /opt/elasticmq.conf (путь из ENTRYPOINT JVM-образа).
|
||||
@@ -8,10 +8,11 @@ package elasticmq
|
||||
import "fmt"
|
||||
|
||||
// GenerateConfig генерирует HOCON конфигурацию для ElasticMQ инстанса тенанта.
|
||||
// tenantID — ID тенанта (используется в context-path и accountId).
|
||||
// externalHost — публичный хост (SQS_EXTERNAL_HOST env var, например sqs.kube5s.ru).
|
||||
// persistence — если true, сообщения сохраняются в H2 на PVC /data.
|
||||
func GenerateConfig(tenantID, externalHost string, persistence bool) string {
|
||||
// tenantID — ID тенанта (используется в context-path и accountId).
|
||||
// externalHost — публичный хост (SQS_EXTERNAL_HOST env var, например sqs.kube5s.ru).
|
||||
// persistence — если true, сообщения сохраняются в H2 на PVC /data.
|
||||
// autoCreateQueues — если true, очередь создаётся автоматически при первом обращении.
|
||||
func GenerateConfig(tenantID, externalHost string, persistence bool, autoCreateQueues bool) string {
|
||||
persistenceBlock := ""
|
||||
if persistence {
|
||||
// H2 база данных хранит очереди и сообщения между рестартами pod.
|
||||
@@ -28,6 +29,16 @@ messages-storage {
|
||||
}`
|
||||
}
|
||||
|
||||
autoCreateBlock := ""
|
||||
if autoCreateQueues {
|
||||
// При первом обращении к несуществующей очереди — создать её автоматически.
|
||||
// Полезно для dev/mvp: не нужен явный CreateQueue перед SendMessage.
|
||||
autoCreateBlock = `
|
||||
auto-create-queues {
|
||||
enabled = true
|
||||
}`
|
||||
}
|
||||
|
||||
return fmt.Sprintf(`include classpath("application.conf")
|
||||
|
||||
# Внешний адрес ноды — как будут формироваться queue URL в ответах SQS API.
|
||||
@@ -46,11 +57,11 @@ rest-sqs {
|
||||
# strict — соответствие AWS SQS валидации параметров
|
||||
sqs-limits = strict
|
||||
}
|
||||
%s
|
||||
%s%s
|
||||
# accountId = tenantID — используется в ARN очередей
|
||||
aws {
|
||||
region = ru-msk-1
|
||||
accountId = "%s"
|
||||
}
|
||||
`, tenantID, externalHost, tenantID, persistenceBlock, tenantID)
|
||||
`, tenantID, externalHost, tenantID, persistenceBlock, autoCreateBlock, tenantID)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user