feat(desktop): push publish tasks via AMQP topic dispatch WebSocket
Introduce a desktop.task.dispatch topic exchange with per-client routing keys. Tenant-api publishes a task_available frame keyed by target client ID when a publish job is created; every instance binds its own transient queue and forwards to the matching WebSocket (/api/desktop/dispatch) it owns. Desktop-client now prefers this push channel and only falls back to HTTP /lease polling when the socket is down. Also drop admin-web monitoring-plugin remnants and scope the publish modal account list to publish platforms. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -78,6 +78,9 @@ type RabbitMQConfig struct {
|
||||
GenerationDLQRouteKey string `mapstructure:"generation_dlq_routing_key"`
|
||||
GenerationEventExchange string `mapstructure:"generation_event_exchange"`
|
||||
DesktopTaskEventExchange string `mapstructure:"desktop_task_event_exchange"`
|
||||
DesktopDispatchExchange string `mapstructure:"desktop_dispatch_exchange"`
|
||||
DesktopDispatchPublishPrefix string `mapstructure:"desktop_dispatch_publish_prefix"`
|
||||
DesktopDispatchMonitorPrefix string `mapstructure:"desktop_dispatch_monitor_prefix"`
|
||||
TemplateAssistExchange string `mapstructure:"template_assist_exchange"`
|
||||
TemplateAssistRoutingKey string `mapstructure:"template_assist_routing_key"`
|
||||
TemplateAssistQueue string `mapstructure:"template_assist_queue"`
|
||||
@@ -475,6 +478,15 @@ func normalizeRabbitMQConfig(cfg *RabbitMQConfig) {
|
||||
if strings.TrimSpace(cfg.DesktopTaskEventExchange) == "" {
|
||||
cfg.DesktopTaskEventExchange = "desktop.task.event"
|
||||
}
|
||||
if strings.TrimSpace(cfg.DesktopDispatchExchange) == "" {
|
||||
cfg.DesktopDispatchExchange = "desktop.task.dispatch"
|
||||
}
|
||||
if strings.TrimSpace(cfg.DesktopDispatchPublishPrefix) == "" {
|
||||
cfg.DesktopDispatchPublishPrefix = "publish"
|
||||
}
|
||||
if strings.TrimSpace(cfg.DesktopDispatchMonitorPrefix) == "" {
|
||||
cfg.DesktopDispatchMonitorPrefix = "monitor"
|
||||
}
|
||||
if strings.TrimSpace(cfg.TemplateAssistExchange) == "" {
|
||||
cfg.TemplateAssistExchange = "template.assist"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user