Мені потрібна шина повідомлень високої продуктивності для мого програми , так що я оцінка продуктивності ZeroMQ
, RabbitMQ
і Apache Qpid
. Для вимірювання продуктивності я запускаю тестову програму, яка публікує 10000 повідомлень, використовуючи одну з реалізацій черги повідомлень, і запускаю інший процес на тій самій машині для споживання цих 10000 повідомлень. Потім я фіксую різницю в часі між першим опублікованим повідомленням та останнім отриманим повідомленням.
Нижче наведено налаштування, які я використав для порівняння.
RabbitMQ
: Я використовував обмін типу "fanout" та чергу з конфігурацією за замовчуванням. Я використовував клієнтську бібліотеку RabbitMQ C.ZeroMQ
: Мій видавець публікує заtcp://localhost:port1
допомогоюZMQ_PUSH
socket, Мій брокер слухаєtcp://localhost:port1
і повторно відправляє повідомлення в tcp: // localhost: port2, а мій споживач прослуховуєtcp://localhost:port2
використанняZMQ_PULL
сокета. Я використовую брокера замість однорангового зв'язку для однорангового спілкування,ZeroMQ
щоб зробити порівняння продуктивності справедливим щодо реалізації іншої черги повідомлень, яка використовує брокери.Qpid
Брокер повідомлень на C ++: я використовував обмін типом "fanout" та чергу з конфігурацією за замовчуванням. Я використовував клієнтську бібліотеку Qpid C ++.
Нижче наведено результати роботи:
RabbitMQ
: для отримання 10 000 повідомлень потрібно близько 1 секунди.ZeroMQ
: Отримання 10000 повідомлень займає близько 15 мілі секунд.Qpid
: Отримання 10000 повідомлень займає близько 4 секунд.
Запитання:
- Хтось проводив подібне порівняння продуктивності між чергами повідомлень? Тоді я люблю порівнювати свої результати з вашими.
- Чи можу я якось налаштуватись
RabbitMQ
чиQpid
покращити продуктивність?
Примітка:
Тести проводились на віртуальній машині з двома виділеними процесорами. Результат може відрізнятися для різних апаратних засобів, проте мене в основному цікавить відносна продуктивність продуктів MQ.