Când o singură coadă devine un gât de sticlă din cauza limitărilor CPU pentru un singur fir Erlang, soluția recomandată este sharding-ul pe mai multe cozi paralele. Plugin-ul Consistent Hash Exchange distribuie mesajele pseudo-aleator, dar deterministic: toate mesajele aparținând aceluiași utilizator sau aceleiași comenzi ajung garantat în aceeași coadă, păstrând ordinea strictă a evenimentelor.
Activare și configurare în consolă
# 1. Activarea plugin-ului în RabbitMQ:
$ rabbitmq-plugins enable rabbitmq_consistent_hash_exchange
# 2. Legarea a două cozi paralele cu greutăți egale (weight = 10):
# Coada A primește ~50% din mesaje
channel.queue_bind(queue='coada_sharded_1', exchange='hash_ex', routing_key='10')
# Coada B primește ~50% din mesaje
channel.queue_bind(queue='coada_sharded_2', exchange='hash_ex', routing_key='10')
# Când publicăm, specificăm ID-ul clientului drept routing key:
channel.basic_publish(exchange='hash_ex', routing_key='user_id_9841', body=b'Date...')
Întrebări & Exemple de Cod:
Exchange-uri cu Hash Consistent în RabbitMQ: Sharding și Partiționare de CoziAi o nelămurire despre utilizarea comenzii
Exchange-uri cu Hash Consistent în RabbitMQ: Sharding și Partiționare de Cozisau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.