2015-10-01 23 views
6

Questa è la domanda precedente più vicina che ho trovato: Azure Service Bus Subscription OnMessage not receiving messages.il bus di servizio azzurro non riceve tutti i messaggi (solo ~ 65%)

La stessa cosa succede anche a me. Quando cambio il nome dell'argomento funziona di nuovo per un po '. Quindi l'argomento del bus di servizio è di nuovo danneggiato. Solo il 65-71% dei messaggi in arrivo. Non aiuta a cancellare il subscritption, né l'argomento. Il nome dell'argomento sembra essere in qualche modo inquinato dopo un po '. È davvero molto brutto, perché non ho modo di dire quando l'argomento è corrotto, tranne che il sistema non funziona come dovrebbe quando i messaggi non arrivano. Creare un nuovo argomento con il nuovo nome in modo casuale di tanto in tanto sembra una soluzione assolutamente pessima.

Lo sto testando attraverso un ciclo in un processo, inviando i messaggi, quindi un ciclo in un altro processo, ricevendo e contando. Con un nuovo nome di argomento funziona perfettamente. E so che ho solo un ascoltatore per l'abbonamento, ed è un blocco di sbirciatina, richiede che il messaggio sia completato.

Chiunque? Come posso risolvere questo?

AGGIORNAMENTO: C'è un trucco qui. Ho avuto 1 abbonamento creato e mantenuto una connessione ad esso; 1 argomento creato e il bus ricreato 10 volte, inviando 100 msg ogni volta. Nessun messaggio perso. Ho avuto 1 abbonamento creato e un nuovo client di sottoscrizione creato per ogni volta che viene ricreato il bus e inviato 100 msg. Perdere il 50% delle msg. Sembra che l'argomento sia a conoscenza del client di sottoscrizione precedente e che i messaggi vengano inviati ai due?

NUOVE DOMANDE: Sto cercando di capire come gestirlo. Qualcuno può confermare che un riavvio del processo, che porta alla creazione di un nuovo client di sottoscrizione con lo stesso nome di sottoscrizione, renderebbe l'argomento gestire i messaggi tra il primo e il secondo client di sottoscrizione, anche se il primo non è più lì? Dato che sto cercando di gestire gli errori riavviando il mio modulo di iscrizione, cioè passando attraverso i passaggi per verificare se esiste un argomento, se esiste una sottoscrizione e quindi creare un client di sottoscrizione, sto cercando di capire come evitare quanto sopra descritto, ed evitare messaggi di essere distribuite al sottoscrittore inesistenti anche ..

Suggerimento per la soluzione, atm: tenere traccia dei vecchi abbonamenti, e se devo riavviare processo, creare un nuovo abbonamento? Lascia una finestra tra il processo in corso e la nuova sottoscrizione creata, in cui i messaggi verranno inviati all'abbonamento "morto". Questi messaggi saranno persi. Ma almeno tutti i messaggi successivi verranno ricevuti dal nuovo abbonamento. Man .. questo problema deve essere stato trattato prima. Non sto facendo bene Apprezzerei molto una guida qui.

SOLUZIONE: Si tratta dello strumento giusto per il lavoro. Questa situazione richiede una coda, non un pub/sottotitolo. Tutto risolto. Sto facendo gli stessi test di cui sopra, ma con la coda invece, e ovviamente, dal momento che è deciso clientide che riceve un messaggio, non c'è nessun problema con i client di sottoscrizione precedenti (morti) che prendono i messaggi da quelli nuovi. Solo un client di coda sarà vivo alla volta, quindi c'è solo uno che può rimuovere msgs dalla coda.

+0

Buon lavoro! Si prega di inviare la soluzione come risposta e accettarla come corretta. Questo aiuterà le persone a sapere che la tua domanda ha avuto risposta. –

risposta

3

SOLUZIONE: si tratta dello strumento giusto per il lavoro. Questa situazione richiede una coda, non un pub/sottotitolo. Tutto risolto.Sto facendo gli stessi test di cui sopra, ma con la coda invece, e ovviamente, dal momento che è deciso clientide che riceve un messaggio, non c'è nessun problema con i client di sottoscrizione precedenti (morti) che prendono i messaggi da quelli nuovi. Solo un client di coda sarà vivo alla volta, quindi c'è solo quello che può togliere i messaggi dalla coda.

Problemi correlati