Poiché il progetto ha bisogno che alcuni dati vengano inviati e ricevuti, dato che la quantità di dati è relativamente grande, circa 3 milioni di dati al giorno
All'inizio ho usato http post per inviare i dati, ma ho scoperto che era troppo lento e la velocità di invio era molto più bassa di quella di ricezione.
Quindi, se vuoi usare una connessione socket lunga per inviare e ricevere dati, scrivi tu stesso il server socket e il client, una cosa è una perdita di tempo, ma potrebbe non essere fatto bene
Infine, activemq viene utilizzato per inviare e ricevere dati
Innanzitutto, il codice produttore è il seguente:
Per il consumatore, ci sono due modelli:
1: Abbonamento ordinario, nessuna necessità di un "abbonamento" persistente, cioè, durante la connessione puoi ricevere messaggi e non puoi ricevere messaggi prima di connetterti, usando "CreateConsumer" 2: Abbonamento persistente, dopo la connessione, puoi ricevere dati che non sono mai stati inviati prima, utilizzando "CreateDurableConsumer"
Collegamenti all'introduzione di CreateDurableConsumer:Il login del link ipertestuale è visibile.
Crea un abbonamento persistente non condiviso sull'argomento specificato se non esiste già, e crea un consumatore su quell'abbonamento persistente. Questo metodo crea un abbonamento persistente senza utilizzare un selettore di messaggi, e il valore noLocal è falso. L'applicazione utilizza un abbonamento persistente e deve ricevere tutti i messaggi pubblicati sull'argomento, inclusi quelli pubblicati quando non ci sono consumatori attivi associati. Il provider JMS tiene traccia di questo abbonamento persistente e garantisce che tutti i messaggi dell'editore in questione vengano conservati fino alla consegna al consumatore e confermati da quell'abbonamento persistente fino alla loro scadenza.
Gli abbonamenti persistenti continuano ad accumulare messaggi finché non vengono cancellati utilizzando il metodo di disiscrizione.
Questo metodo può essere utilizzato solo con abbonamenti persistenti non condivisi. Qualsiasi abbonamento persistente creato con questo metodo sarà non condiviso. Ciò significa che solo un consumatore attivo (cioè non chiuso) può esistere sull'abbonamento alla volta. Il termine "consumer" qui indica l'oggetto TopicSubscriber, MessageConsumer o JMSConsumer in qualsiasi client.
Un abbonamento persistente non condiviso viene identificato da un nome specificato dal client e da un identificatore del client che deve essere impostato. Le applicazioni che poi vogliono creare consumatori con un abbonamento persistente non condiviso devono utilizzare lo stesso identificatore client.
Se esiste già un abbonamento persistente non condiviso con lo stesso nome e identificatore del cliente, e lo stesso argomento, selettore di messaggi e valore noLocal sono già specificati, e nessun consumatore è già attivo (cioè non chiuso) sull'abbonamento persistente, questo metodo crea un abbonamento duraturo esistente sul MessageConsumer.
Se esiste già un abbonamento persistente non condiviso con lo stesso nome e identificatore client, e c'è un consumatore sull'abbonamento persistente già attivo (cioè non chiuso), verrà attivato un JMSException.
Se esiste già un abbonamento persistente non condiviso con lo stesso nome e identificatore del cliente ma con un soggetto diverso, è stato specificato un selettore di messaggi o un valore noLocal e nessun consumatore è già attivo (cioè non chiuso) sull'abbonamento persistente, allora ciò equivale a disiscriversi (eliminare) quello vecchio e crearne uno nuovo.
Gli abbonamenti persistenti condivisi e non condivisi potrebbero non avere lo stesso nome e identità del cliente. Se esiste già un abbonamento persistente condiviso con lo stesso nome e identificatore client, viene lanciata una JMSException.
Non c'è limite agli abbonamenti persistenti e agli abbonamenti non persistenti condivisi con lo stesso nome e clientId. Un tale abbonamento sarà completamente separato.
Questo metodo è lo stesso del corrispondente metodo createDurableSubscriber, tranne per il fatto che restituisce un MessageConsumer invece di un TopicSubscriber per rappresentare il consumatore.
Parametro: Temi - Abbonamenti non temporanei a argomenti nome - Il nome usato per identificare questo abbonamento Lancio: InvalidDestinationException - Se viene specificato un argomento non valido. IllegalStateException - Se l'identificativo ospite non è impostato JMSException - Se la sessione non riesce a creare un abbonamento persistente non condiviso e MessageConsumer a causa di un errore interno Se esiste già un abbonamento persistente non condiviso con lo stesso nome e identificatore del cliente, e il consumatore è già attivo Se esiste già un abbonamento persistente condiviso con lo stesso nome e identificatore del cliente Dato che: JMS 2.0 IMessageConsumer CreateDurableConsumer(ITopic destinazione, nome stringa, selettore stringa, bool noLocal);
dove messageSelector è il selettore dei messaggi; Il flag noLocal è falso di default e, se impostato su true, limita i consumatori dal ricevere solo messaggi pubblicati dalla stessa connessione, cosa applicabile solo agli argomenti, non alle code. Il nome è l'identità unica dell'argomento in abbonamento, e questo parametro deve essere impostato quando si abbona a un abbonamento persistente.
Activemq .net deve fare riferimento al download del pacchetto:Il login del link ipertestuale è visibile.
Scarica il codice sorgente completo:
Turisti, se volete vedere il contenuto nascosto di questo post, vi prego Risposta
|