Eftersom projektet behöver viss data som skickas och tas emot, eftersom mängden data är relativt stor, cirka 3 miljoner data per dag
I början använde jag http post för att skicka data, men upptäckte att det var för långsamt och att sändningshastigheten var mycket lägre än mottagningshastigheten.
Därför, om du vill använda en lång socketanslutning för att skicka och ta emot data, skriv socket-servern och klienten själv, är det slöseri med tid, men det kanske inte görs så bra
Slutligen används activemq för att skicka och ta emot data
För det första är producentkoden följande:
Konsument finns det två modeller:
1: Vanlig prenumeration, inget behov av permanent "prenumeration", det vill säga när du ansluter kan du ta emot meddelanden, men du kan inte ta emot meddelanden innan anslutningen, med hjälp av "CreateConsumer" 2: Persistent prenumeration, efter anslutning kan du ta emot data som inte tidigare har skickats med hjälp av "CreateDurableConsumer"
Länkar till introduktionen av CreateDurableConsumer:Inloggningen med hyperlänken är synlig.
Skapa en icke-delad persistent prenumeration på det angivna ämnet om det inte redan finns, och skapa en konsument på den persistenta prenumerationen. Denna metod skapar en persistent prenumeration utan att använda en meddelandeväljare, och noLocal-värdet är falskt. Applikationen använder en persistent prenumeration och måste ta emot alla meddelanden som publiceras om ämnet, inklusive meddelanden som publiceras när inga aktiva konsumenter är kopplade till den. JMS-leverantören för en logg över denna bestående prenumeration och säkerställer att alla meddelanden från den aktuella utgivaren behålls tills de levereras till konsumenten och bekräftas av den permanenta prenumerationen tills de har gått ut.
Beständiga prenumerationer fortsätter att samla meddelanden tills de raderas med avprenumerationsmetoden.
Denna metod kan endast användas med icke-delade persistenta prenumerationer. Alla bestående prenumerationer som skapas med denna metod kommer att delas ej. Detta innebär att endast en aktiv (dvs. inte stängd) konsument kan finnas på prenumerationen åt gången. Termen "konsument" här avser objektet TopicSubscriber, MessageConsumer eller JMSConsumer i varje klient.
En icke-delad persistent prenumeration identifieras med ett klientspecificerat namn och en klientidentifierare som måste ställas in. Applikationer som sedan vill skapa konsumenter på en icke-delad persistent prenumeration måste använda samma klientidentifierare.
Om en icke-delad persistent prenumeration med samma namn och klientidentifierare redan finns, och samma ämne, meddelandeväljare och noLocal-värde redan är specificerade, och ingen konsument redan är aktiv (dvs. inte stängd) på den persistenta prenumerationen, skapar denna metod en befintlig varaktig prenumeration på MessageConsumer.
Om ett icke-delat persistent abonnemang med samma namn och klientidentifierare redan existerar, och det finns en konsument på det persistenta abonnemanget som redan är aktiv (dvs. inte stängd), kommer en JMSException att kastas.
Om det redan finns en icke-delad persistent prenumeration med samma namn och klientidentifierare men med ett annat ämne, en meddelandeväljare eller noLocal-värde har specificerats, och ingen konsument redan är aktiv (dvs. inte stängd) på den persistenta prenumerationen, är detta likvärdigt med att avprenumerera (radera) den gamla och skapa en ny.
Delade och icke-delade beständiga prenumerationer kanske inte har samma namn och klientidentitet. Om en delad persistent prenumeration med samma namn och klientidentifierare redan existerar, kastas en JMSException.
Det finns ingen gräns för persistenta prenumerationer och delade icke-persistenta prenumerationer med samma namn och clientId. En sådan prenumeration kommer att vara helt separat.
Denna metod är densamma som motsvarande createDurableSubscriber-metod, förutom att den returnerar en MessageConsumer istället för en TopicSubscriber för att representera konsumenten.
Parameter: Teman - Icke-tillfälliga ämnesprenumerationer namn - Namnet som används för att identifiera denna prenumeration Kast: InvalidDestinationException – Om ett ogiltigt ämne specificeras. IllegalStateException – Om gästidentifieraren inte är inställd JMSException - Om sessionen misslyckas med att skapa en icke-delad persistent prenumeration och MessageConsumer på grund av något internt fel Om en icke-delad persistent prenumeration med samma namn och klientidentifierare redan existerar, och konsumenten redan är aktiv Om en delad persistent prenumeration med samma namn och klientidentifierare redan finns Eftersom: JMS 2.0 IMessageConsumer CreateDurableConsumer(ITopic destination, strängnamn, strängväljare, bool noLocal);
där messageSelector är meddelandeväljaren; NoLocal-flaggan är falsk som standard, och när den sätts till true begränsar den konsumenter från att endast ta emot meddelanden som publiceras av samma anslutning som dem själva, vilket endast gäller ämnen, inte köer. Namnet är den unika identiteten för prenumerationsämnet, och denna parameter måste sättas när du prenumererar på en persistent prenumeration.
Activemq .net behöver referera till paketnedladdning:Inloggningen med hyperlänken är synlig.
Fullständig källkodsnedladdning:
Turister, om ni vill se det dolda innehållet i detta inlägg, snälla Svar
|