Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 13505|Jawab: 2

Pengaturan langganan persisten ActiveMQ

[Salin tautan]
Diposting pada 09/01/2017 11.12.10 | | |

Pengaturan langganan persisten ActiveMQ
Dengan mengatur mode pengiriman PERSISTENT untuk penerbit, Anda dapat menggunakan langganan persisten untuk pelanggan, yang menjamin bahwa program Pub/Sub menerima semua pesan yang diterbitkan.
Langganan pesan dibagi menjadi langganan tidak tahan lama dan langganan tahan lama, dan langganan tidak tahan lama hanya dapat menerima pesan yang dikirim ke topik saat klien aktif, yaitu, ketika klien offline, pesan yang dikirim ke topik selama periode ini akan hilang dan tidak pernah diterima. Saat klien offline, ActiveMQ akan menyimpan semua pesan yang dikirim ke subjek sesuai dengan ID-nya, dan ketika klien terhubung ke ActiveMQ lagi, ia akan mendapatkan semua pesan yang dikirim ke subjek saat offline. Langganan persisten meningkatkan overhead dan hanya memiliki satu pengguna aktif dalam langganan persisten pada satu waktu. Langkah-langkah untuk membuat langganan persisten:
1. Siapkan ID pelanggan untuk koneksi;
2. Tentukan nama langganan untuk topik langganan;
Kombinasi di atas harus unik.
Kode mengimplementasikan langganan persisten

(1) Saat menggunakan antrian, yaitu saat mengantri, hanya ada satu konsumen per pesan, jadi persistensinya sangat sederhana, cukup simpan ke database

。 Kemudian, setiap konsumen dapat mengambilnya dan membuangnya. Tidak masalah jika konsumen mematikannya untuk sementara waktu.

(2) Saat menggunakan topik, yaitu saat berlangganan, setiap pesan dapat memiliki banyak konsumen, yang lebih merepotkan.

Pertama, dengan asumsi bahwa konsumen adalah konsumen biasa,
------------------------
Setelah peluncuran <1> activemq diluncurkan, berita 1 dirilis, namun sayangnya tidak ada konsumen yang memulai sekarang, yaitu tidak ada konsumen yang berlangganan. Jadi

, berita itu ditinggalkan.

<2> Konsumen 1 dimulai, terhubung ke activemq, berlangganan, dan menunggu pesan~~

activemq memposting pesan 2, OK, konsumen 1 menerima, dan memprosesnya. Pengabaian pesan.

<3> Consumer 2 juga diluncurkan, terhubung ke activemq, berlangganan, dan sedang menunggu pesan~~

activemq menerbitkan pesan 3, OK, konsumen 1, konsumen 2 semuanya diterima dan diproses. Pengabaian pesan.

<4> Konsumen 1 dimatikan.

activemq memposting pesan 4, OK, konsumen 2 menerima, dan memprosesnya. Pengabaian pesan.

<5> Konsumen 1 dimulai lagi.

activemq menerbitkan pesan 5, OK, konsumen 1, dan konsumen 2 semuanya menerima dan memprosesnya. Pengabaian pesan.
-----------------------------
Singkatnya:
ActiveMQ hanya mengirim pesan ke konsumen yang saat ini diluncurkan.
Konsumen yang mematikan akan melewatkan banyak pesan dan tidak akan dapat menerimanya lagi.

Jika pesan yang dikirim adalah data sinkronisasi pengguna penting dan melesetnya, data pengguna tidak disinkronkan.

Jadi, bagaimana Anda membuat konsumen menerima pesan tak terjawab saat mereka memulai ulang?

Jawabannya adalah langganan yang terus-menerus.
-----------------------------

Langganan biasa, tanpa membedakan antara konsumen, jika ada beberapa kepala di tempat tersebut, lemparkan beberapa roti kukus.
Untuk langganan persisten, Anda perlu mencatat nama konsumen.
Zhang San berkata, saya Zhang San, ada roti kukus untuk saya, saya akan kembali untuk mengambilnya.
Li Si berkata, saya Li Si, ada roti kukus untuk saya, saya akan kembali untuk mengambilnya.
activemq menuliskan nama Zhang San dan Li Si.

Kemudian, saat membagi roti kukus, satu kepala masih memberikan roti kukus.
Setelah pembagian, ketika dia melihat bahwa Zhang San tidak berbicara, itu berarti dia tidak ada di sana, jadi tinggalkan dia satu.
Li Si berbicara, jadi tidak perlu tinggal.

Zhang San kembali, mencari activemq, dan melihat-lihat, ini bukan Zhang San, bawa roti kukusnya dengan cepat.
Mungkin satu roti kukus, atau mungkin 100 roti kukus, itu tergantung pada berapa banyak roti kukus yang telah dibagi Zhang San sejak dia pergi sebentar.

activemq membedakan konsumen berdasarkan clientID dan nama pelanggan.
-----------------------------
Membuat koneksi
koneksi = connectionFactory.createConnection();
connection.setClientID("bbb"); Langganan persisten memerlukan pengaturan ini.
koneksi.mulai();

Membuat sesi
Sesi sesi = connection.createSession(false,Session.AUTO_ACKNOWLEDGE);

Membuat tujuan
Topik topik = session.createTopic("userSyncTopic"); Nama topik

MessageConsumer konsumen = session.createConsumer(topik); Berlangganan reguler
MessageConsumer konsumen = session.createDurableSubscriber(topic,"bbb"); Langganan persisten


Poin lainnya adalah bahwa produsen pesan menggunakan mode persisten saat mengirim pesan
Produser MessageProducer = ...;
producer.setDeliveryMode(DeliveryMode.PERSISTENT);
Jika tidak, itu persisten secara default

(5) Jika "clientID" yang sama digunakan, itu dianggap sebagai konsumen yang sama. Jika dua program menggunakan "clientID" yang sama, hanya satu yang dapat terhubung ke activemq secara bersamaan, dan koneksi kedua akan melaporkan kesalahan.

(6) Pengaturan activemq ada di conf/activemq.xml, dan pesan default disimpan di data/kahadb, dan pesan tidak akan hilang saat memulai ulang activemq.

Anda dapat mengakses http://localhost:8161/admin/index.jsp: melihat informasi tentang antrean, topik, dan pelanggan persisten saat ini, mengirim pesan, dan lainnya.

Anda dapat menyalin konten di activemq-jdbc.xml dan memodifikasinya, dan Anda dapat menyimpan pesan di database lain.




Mantan:Merebut tiket 360 Saluran VIP generasi kelima retak, dengan cepat masuk ke antrean VIP
Depan:. Platform .Net
 Tuan tanah| Diposting pada 09/01/2017 13.41.53 |
1 Perbandingan karakteristik teknis antrian dan topik
Nama
Topik
Antrean
Ikhtisar
Publikasikan pesan berlangganan Publikasikan pesan langganan
Point-to-Point Point-to-Point
Tidak ada negara bagian
Data topik tidak memiliki status secara default.
Data antrean disimpan sebagai file di server MQ secara default, misalnya, Active MQ biasanya disimpan di bawah $AMQ_HOME\data\kr-store\data. Itu juga dapat dikonfigurasi sebagai penyimpanan DB.
Jaminan integritas
Tidak ada jaminan bahwa setiap data yang diterbitkan oleh penerbit akan diterima oleh pelanggan.
Queue menjamin bahwa setiap bagian data dapat diterima oleh penerima.
apakah pesan akan hilang
Secara umum, ketika penerbit menerbitkan pesan ke topik, hanya sub yang mendengarkan alamat topik yang dapat menerima pesan tersebut. Jika tidak ada sub mendengarkan, topiknya hilang.
Pengirim mengirim pesan ke Antrean target, dan penerima dapat menerima pesan pada Antrean ini secara asinkron. Pesan di Antrian tidak akan hilang jika tidak ada penerima untuk mengambilnya untuk saat ini.
Kebijakan penerimaan rilis pesan
Kebijakan penerbitan dan penerimaan pesan satu-ke-banyak, beberapa sub yang mendengarkan alamat topik yang sama dapat menerima pesan yang dikirim oleh penerbit. Sub menerima pemberitahuan ke server mq
Kebijakan penerbitan dan penerimaan pesan satu-ke-satu, pesan yang dikirim oleh pengirim hanya dapat diterima oleh satu penerima. Setelah penerima menerima, server MQ memberi tahu server MQ bahwa telah diterima, dan server MQ menghapus atau mengambil tindakan lain pada pesan dalam antrean.

 Tuan tanah| Diposting pada 09/01/2017 13.42.15 |
Perbedaan terbesar antara topik dan antrian adalah topik tersebut dalam bentuk penyiaran, memberi tahu semua klien pendengar online bahwa ada pesan baru, dan klien tanpa pemantauan tidak akan menerima pesan; Antrian, di sisi lain, memberi tahu salah satu dari beberapa klien yang mendengarkan secara peer-to-peer.

2 Perbandingan efisiensi pemrosesan pesan antara metode topik dan antrean
        Dengan meningkatkan jumlah konkurensi klien yang mendengarkan, verifikasi apakah dorongan pesan topik akan berkurang secara signifikan karena peningkatan konkurensi klien yang mendengarkan.
        Dari hasil yang diukur, tidak ada perbedaan yang signifikan dalam efisiensi pengiriman dan penerimaan pesan yang dikirim oleh metode topik di bawah premis satu pelanggan dan 100 pelanggan, tetapi di bawah premis konkurensi 500 pelanggan (utas), perbedaan efisiensi terlihat jelas (karena konkurensi 500 utas, tingkat penggunaan CPU mesin saya setinggi 70-90%, sehingga tidak mungkin untuk mengonfirmasi apakah itu kemacetan kinerja yang disebabkan oleh pengujian lokal saya atau kemacetan kinerja dalam metode pengiriman pesan topik, menghasilkan penurunan efisiensi yang signifikan).
        Tidak ada perbedaan yang signifikan dalam efisiensi pengiriman dan penerimaan pesan yang dikirim oleh metode topik dan mode antrean di bawah premis satu pelanggan dan 100 pelanggan, tetapi di bawah premis konkurensi 500 pelanggan, efisiensi mode topik secara signifikan lebih rendah daripada antrean.
        Efisiensi pengiriman dan penerimaan pesan yang dikirim dalam metode Queue tidak berubah secara signifikan di bawah premis satu pelanggan, 100 pelanggan, dan 500 pelanggan.
Data terukur topik:


Jumlah total pesan yang dikirim oleh pengirim
Jumlah total pesan yang diterima oleh semua pelanggan
Waktu rata-rata yang diperlukan untuk mengirim dan menerima pesan
Pelanggan tunggal
100
100
101 ms
100 pelanggan
100
10000
103 ms
500 pelanggan
100
50000
14162 detik

Data terukur antrean:


Jumlah total pesan yang dikirim oleh pengirim
Jumlah total pesan yang diterima oleh semua pelanggan
Waktu rata-rata yang diperlukan untuk mengirim dan menerima pesan
Pelanggan tunggal
100
100
96 milietik
100 pelanggan
100
100
96 milietik
500 pelanggan
100
100
100 detik

Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com