2013-08-21 12 views
73
  1. Jakie wiadomości można przechowywać w kolejkach RabbitMQ? Tylko ciągi? Czy mogę wybrać typ, który chcę zapisać: int, binarny, ciąg itp.?
  2. Jaki jest maksymalny rozmiar jednej wiadomości?
  3. Ile kolejek lub wymian można utworzyć? Czy to zależy od mocy serwera?

Odpowiedz

88
  1. Teoretycznie wszystko można przechowywać/wysyłane w postaci wiadomości. W rzeczywistości nie chcesz przechowywać niczego w kolejkach. System działa najskuteczniej, jeśli kolejki są puste przez większość czasu. Można wysłać cokolwiek chcesz do kolejki z dwóch warunków:

    • Rzecz wysyłasz może być przekształcony do iz bytestring
    • Konsument dokładnie wie co robi i jak konwertować go do oryginalny obiekt

    Struny są dość proste, mają wbudowaną metodę konwersji do iz bajtów. Jeśli wiesz, że to ciąg znaków, to wiesz, jak go przekonwertować. Najlepszą opcją jest użycie łańcucha znaczników, takiego jak XML, JSON lub YML. W ten sposób możesz konwertować obiekty na łańcuchy i z powrotem do oryginalnych obiektów; działają w językach programowania, dzięki czemu konsument może być napisany w innym języku niż producent, o ile wie, jak rozumieć dany obiekt. Pracuję w Javie. Chcę wysyłać złożone wiadomości z obiektami podrzędnymi w polach. Używam własnego obiektu wiadomości. Obiekt komunikatu ma dwie dodatkowe metody, które konwertują do i z bajttreamu. Używam kluczy routingu, które nie pozostawiają wątpliwości co do rodzaju wiadomości, którą otrzymuje konsument. Wiadomość jest Serializable. Działa to dobrze, ale jest ograniczone, ponieważ mogę go używać tylko z innymi programami Java.

  2. Rozmiar wiadomości jest ograniczony przez pamięć na serwerze, a jeśli jest trwała, to również wolna przestrzeń HDD. Prawdopodobnie nie chcesz wysyłać wiadomości, które są zbyt duże; lepiej wysłać referencję do pliku lub DB.

    kupili także przeczytać na ich mierników wyników: http://www.rabbitmq.com/blog/2012/04/17/rabbitmq-performance-measurements-part-1/ http://www.rabbitmq.com/blog/2012/04/25/rabbitmq-performance-measurements-part-2/

  3. Kolejki są dość lekki ciężar, to najprawdopodobniej będzie ograniczony przez liczbę połączeń masz. To zależy od serwera najprawdopodobniej. Oto kilka informacji na podobne pytanie: http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2009-February/003042.html

2
  1. Zobacz robthewolf's answer.

  2. Maksymalny rozmiar wiadomości to 2 GB, jednak dostosowanie wydajności wiadomości o tym rozmiarze nie jest skuteczne. Max Message Size

  3. Nie ma twardego ograniczenia narzuconego przez RabbitMQ Server Software na liczbę kolejek, jednak sprzęt, na którym działa serwer, może bardzo dobrze wpłynąć na ten limit.

3a.Domyślnie serwer nie określa limitu długości kolejki. Można jednak ograniczyć to poprzez politykę po stronie serwera (konfiguracja) lub zasady po stronie klienta. Max Queue Length

Istnieje więcej informacji i linków na temat related post.