Karena proyek membutuhkan beberapa data untuk didorong dan diterima, karena jumlah datanya relatif besar, sekitar 3 juta data sehari
Pada awalnya, saya menggunakan http post untuk mengirimkan data, tetapi menemukan bahwa itu terlalu lambat, dan kecepatan pengirimannya jauh lebih kecil daripada kecepatan penerimaan.
Oleh karena itu, jika Anda ingin menggunakan koneksi soket yang panjang untuk mendorong dan menerima data, tulis sendiri server dan klien soket, satu adalah buang-buang waktu, tetapi mungkin tidak dilakukan dengan baik
Terakhir, activemq digunakan untuk mendorong dan menerima data
Pertama, kode produser adalah sebagai berikut:
Konsumen, ada dua model:
1: Langganan biasa, tidak perlu "berlangganan" terus-menerus, yaitu, saat terhubung, Anda dapat menerima pesan, dan Anda tidak dapat menerima pesan sebelum terhubung, menggunakan "CreateConsumer" 2: Langganan persisten, setelah terhubung, Anda dapat menerima data yang belum pernah didorong sebelumnya, menggunakan "CreateDurableConsumer"
Tautan ke pengenalan CreateDurableConsumer:Login hyperlink terlihat.
Buat langganan persisten yang tidak dibagikan pada topik yang ditentukan jika belum ada, dan buat konsumen pada langganan persisten tersebut. Metode ini membuat langganan persisten tanpa menggunakan pemilih pesan, dan nilai noLocal adalah false. Aplikasi menggunakan langganan persisten, dan aplikasi perlu menerima semua pesan yang diterbitkan pada topik tersebut, termasuk pesan yang diterbitkan ketika tidak ada konsumen aktif yang terkait dengannya. Penyedia JMS menyimpan catatan langganan persisten ini dan memastikan bahwa semua pesan dari penerbit subjek akan disimpan hingga dikirimkan ke konsumen dan dikonfirmasi oleh langganan persisten tersebut hingga kedaluwarsa.
Langganan persisten terus mengakumulasi pesan hingga dihapus menggunakan metode berhenti berlangganan.
Metode ini hanya dapat digunakan dengan langganan persisten yang tidak dibagikan. Setiap langganan persisten yang dibuat menggunakan metode ini tidak akan dibatalkan. Ini berarti bahwa hanya satu konsumen aktif (yaitu, tidak tertutup) yang dapat ada pada langganan pada satu waktu. Istilah "konsumen" di sini menunjukkan objek TopicSubscriber, MessageConsumer, atau JMSConsumer di klien apa pun.
Langganan persisten yang tidak dibagikan diidentifikasi dengan nama yang ditentukan klien dan pengidentifikasi klien yang harus diatur. Aplikasi yang kemudian ingin membuat konsumen pada langganan persisten yang tidak dibagikan harus menggunakan pengidentifikasi klien yang sama.
Jika langganan persisten yang tidak dibagikan dengan nama dan pengidentifikasi klien yang sama sudah ada, dan topik, pemilih pesan, dan nilai noLocal yang sama sudah ditentukan, dan tidak ada konsumen yang sudah aktif (yaitu, tidak ditutup) pada langganan persisten, metode ini membuat langganan tahan lama yang ada di MessageConsumer.
Jika langganan persisten yang tidak dibagikan dengan nama dan pengidentifikasi klien yang sama sudah ada, dan ada konsumen pada langganan persisten yang sudah aktif (yaitu, tidak ditutup), JMSException akan dilemparkan.
Jika sudah ada langganan persisten yang tidak dibagikan dengan nama dan pengidentifikasi klien yang sama tetapi subjek yang berbeda, pemilih pesan atau nilai noLocal telah ditentukan, dan tidak ada konsumen yang sudah aktif (yaitu tidak ditutup) pada langganan persisten, maka ini setara dengan berhenti berlangganan (menghapus) yang lama dan membuat yang baru.
Langganan persisten bersama dan tidak bersama mungkin tidak memiliki nama dan identitas klien yang sama. Jika langganan persisten bersama dengan nama dan pengidentifikasi klien yang sama sudah ada, JMSException akan dilemparkan.
Tidak ada batasan untuk langganan persisten dan langganan non-persisten bersama dengan nama dan clientId yang sama. Langganan semacam itu akan sepenuhnya terpisah.
Metode ini sama dengan metode createDurableSubscriber yang sesuai, kecuali bahwa metode ini mengembalikan MessageConsumer, bukan TopicSubscriber untuk mewakili konsumen.
Parameter: Tema - Langganan topik non-sementara name - Nama yang digunakan untuk mengidentifikasi langganan ini Melempar: InvalidDestinationException - Jika topik tidak valid ditentukan. IllegalStateException - Jika ID tamu tidak diatur JMSException - Jika sesi gagal membuat langganan persisten yang tidak dibagikan dan MessageConsumer karena beberapa kesalahan internal Jika langganan persisten yang tidak dibagikan dengan nama dan pengidentifikasi klien yang sama sudah ada, dan konsumen sudah aktif Jika langganan persisten bersama dengan nama dan pengidentifikasi klien yang sama sudah ada Sejak: JMS 2.0 IMessageConsumer CreateDurableConsumer(Tujuan ITopic, nama string, pemilih string, bool noLocal);
di mana messageSelector adalah pemilih pesan; Bendera noLocal adalah false secara default, dan ketika diatur ke true, bendera ini membatasi konsumen untuk hanya menerima pesan yang diterbitkan oleh koneksi yang sama dengan mereka sendiri, yang hanya berlaku untuk topik, bukan antrean. name adalah identitas unik topik langganan, dan parameter ini perlu diatur saat Anda berlangganan langganan persisten.
Activemq .net perlu referensi unduhan paket:Login hyperlink terlihat.
Unduhan kode sumber lengkap:
Wisatawan, jika Anda ingin melihat konten tersembunyi dari posting ini, silakan Jawab
|