- Shipped
- 4 settembre 2026 alle ore 20:02 UTC
- Author
- Kamo
- Commit
- 6c253b6
Un consumatore di spinta durevole ammette esattamente UN abbonato. La seconda capsula per legare lo stesso nome è rifiutato con [SUB-90012] Il consumatore è già legato a un abbonamento, e nulla si riferisce. ChatSessionSubscriptionManager nomina il suo durevole dopo la sessione di chat GUID, quindi con due I baccelli di MediaService che ogni volta che uno ha legato una conversazione prima lo possederebbero silenziosamente e ogni membro il cui WebSocket è atterrato sull'altro pod non riceverà nulla — nessun messaggio, nessuna ricevuta di lettura, no eventi aggiunti, nessun errore. Questa singola proprietà è il motivo per cui MediaService è stato pinned a uno replica, e perché una distribuzione di esso è un outage chat totale piuttosto che un rollover. abbonamentiEphemeral() crea invece un consumatore non chiamato. Non c'è un'identità cross-pod per collidere sopra, così ogni pod riceve ogni messaggio e fan fuori ai propri clienti STOMP — che è quello che il in-heap semplice broker richiede. Mantiene il filtroSubject il percorso durevole imparato a impostare (un filtro vuoto consuma l'intero flusso), e aggiunge un inattivoTreshold così un baccello che è SIGKILLed senza iscrizioni non lascia il suo consumatore sul flusso per sempre. Nessun cambiamento di comportamento per i chiamanti esistenti: abbonarsi() è intatto, e il ciclo di consegna sia l'uso dei percorsi è ora un metodo in modo che non possano derivare. I consumatori effimeri non riproducono i messaggi pubblicati mentre nulla è stato sottoscritto. Né il quelli durevoli — entrambi usano DeliveryPolicy. Nuovo — quindi questa non è una regressione.