Fordi prosjektet trenger at noe data blir sendt og mottatt, og datamengden er relativt stor, omtrent 3 millioner data per dag
I begynnelsen brukte jeg http post for å sende inn data, men fant ut at det var for tregt, og sendingshastigheten var mye lavere enn mottakshastigheten.
Derfor, hvis du vil bruke en lang socket-tilkobling for å sende og motta data, skriv socket-serveren og klienten selv, det ene er bortkastet tid, men det kan hende det ikke gjøres godt
Til slutt brukes activemq til å sende og motta data
For det første er produsentkoden som følger:
Forbruker, det finnes to modeller:
1: Vanlig abonnement, ikke behov for vedvarende "abonnement", det vil si at når du kobler til, kan du motta meldinger, og du kan ikke motta meldinger før tilkobling, ved å bruke "CreateConsumer" 2: Vedvarende abonnement, etter tilkobling kan du motta data som ikke har blitt pushet før, ved å bruke "CreateDurableConsumer"
Lenker til introduksjonen av CreateDurableConsumer:Innloggingen med hyperkoblingen er synlig.
Opprett et ikke-delt persistent abonnement på det angitte temaet hvis det ikke allerede eksisterer, og lag en forbruker på det persistente abonnementet. Denne metoden oppretter et vedvarende abonnement uten å bruke en meldingsvelger, og noLocal-verdien er falsk. Applikasjonen bruker et vedvarende abonnement, og applikasjonen må motta alle meldinger som er publisert om emnet, inkludert meldinger som publiseres når det ikke er aktive brukere tilknyttet. JMS-leverandøren fører oversikt over dette vedvarende abonnementet og sikrer at alle meldinger fra den aktuelle utgiveren beholdes til de er levert til forbrukeren og bekreftet av det vedvarende abonnementet til de har utløpt.
Vedvarende abonnementer fortsetter å samle meldinger til de slettes ved hjelp av avmeldingsmetoden.
Denne metoden kan kun brukes med ikke-delte, vedvarende abonnementer. Alle vedvarende abonnementer opprettet med denne metoden vil ikke deles. Dette betyr at kun én aktiv (dvs. ikke lukket) forbruker kan eksistere på abonnementet om gangen. Begrepet "forbruker" her betegner objektet TopicSubscriber, MessageConsumer eller JMSConsumer i en klient.
Et ikke-delt, vedvarende abonnement identifiseres med et klientspesifisert navn og en klientidentifikator som må oppgis. Applikasjoner som deretter ønsker å opprette brukere på et ikke-delt, vedvarende abonnement, må bruke samme klientidentifikator.
Hvis et ikke-delt persistent abonnement med samme navn og klientidentifikator allerede eksisterer, og samme emne, meldingsvelger og noLocal-verdi allerede er spesifisert, og ingen forbruker allerede er aktiv (dvs. ikke lukket) på det persistente abonnementet, oppretter denne metoden et eksisterende varig abonnement på MessageConsumer.
Hvis et ikke-delt persistent abonnement med samme navn og klientidentifikator allerede eksisterer, og det finnes en forbruker på det persistente abonnementet som allerede er aktiv (dvs. ikke lukket), vil en JMSException bli kastet.
Hvis det allerede finnes et ikke-delt persistent abonnement med samme navn og klientidentifikator, men med et annet emne, en meldingsvelger eller noLocal-verdi er spesifisert, og ingen konsument allerede er aktiv (dvs. ikke lukket) på det persistente abonnementet, tilsvarer dette å avabonnere (slette) det gamle og opprette et nytt.
Delte og ikke-delte, vedvarende abonnementer kan ha ikke samme navn og klientidentitet. Hvis et delt persistent abonnement med samme navn og klientidentifikator allerede eksisterer, kastes en JMSException.
Det finnes ingen grense for vedvarende abonnementer og delte ikke-persistente abonnementer med samme navn og clientId. Et slikt abonnement vil være helt separat.
Denne metoden er den samme som den tilsvarende createDurableSubscriber-metoden, bortsett fra at den returnerer en MessageConsumer i stedet for en TopicSubscriber for å representere forbrukeren.
Parameter: Temaer - Ikke-midlertidige temaabonnementer navn - Navnet som brukes for å identifisere dette abonnementet Kast: InvalidDestinationException - Hvis et ugyldig tema er spesifisert. IllegalStateException - Hvis gjesteidentifikatoren ikke er satt JMSException - Hvis sesjonen ikke klarer å opprette et ikke-delt, vedvarende abonnement og MessageConsumer på grunn av en intern feil Hvis et ikke-delt, vedvarende abonnement med samme navn og klientidentifikator allerede eksisterer, og forbrukeren allerede er aktiv Hvis et delt vedvarende abonnement med samme navn og klientidentifikator allerede eksisterer Siden: JMS 2.0 IMessageConsumer CreateDurableConsumer(ITopic destinasjon, strengnavn, strengvelger, bool noLocal);
hvor messageSelector er meldingsvelgeren; noLocal-flagget er falskt som standard, og når det settes til true, begrenser det forbrukere fra kun å motta meldinger publisert av samme tilkobling som dem selv, noe som kun gjelder temaer, ikke køer. Navnet er den unike identiteten til abonnementstemaet, og denne parameteren må settes når du abonnerer på et vedvarende abonnement.
Activemq .net trenger å referere til pakkenedlasting:Innloggingen med hyperkoblingen er synlig.
Full kildekode nedlasting:
Turister, hvis dere vil se det skjulte innholdet i dette innlegget, vær så snill Svare
|