Есть ли в C ++ высокопроизводительная библиотека шины msg в стиле IPC с открытым исходным кодом? - PullRequest
3 голосов
/ 01 декабря 2009

В моем текущем проекте у меня есть слегка распределенная архитектура, то есть несколько исполняемых файлов сотрудничают друг с другом, чтобы добиться цели. Чтобы упростить ситуацию, я надеюсь, что у меня может быть надежная магистральная шина сообщений: когда исполняемый файл подключается к шине msg, он может получить обратный вызов при поступлении нового сообщения. Аналогично, он может публиковать новое сообщение на шине.

Я знаю, что некоторые компании предоставляют такие готовые решения, однако есть ли в OSS бесплатные?

Ответы [ 4 ]

4 голосов
/ 01 декабря 2009

Если вам не нужна поддержка Windows, и ваши процессы не распределены по разным компьютерам, я бы определенно посмотрел D-Bus .

Он написан на C и содержит привязки (согласно веб-странице) для «Qt, GLib, Java, C #, Python и т. Д.)».

Список проектов , использующих D-Bus , также впечатляет.

3 голосов
/ 01 декабря 2009

Задумывались ли вы об использовании AMQP на основе RabbitMQ ?

Есть несколько библиотек для C привязки , которые вы могли бы "одеть" для C ++.

RabbitMQ является полным и высоко надежная система обмена корпоративными сообщениями основанный на появляющемся AMQP стандарт. Он лицензирован под Общественная лицензия Mozilla с открытым исходным кодом и имеет платформо-нейтральное распределение, плюс пакеты для конкретной платформы и пучки для легкой установки.


Конечно, если вам требуется что-то «менее распределенное», вы можете сразу перейти к использованию DBus.

1 голос
/ 03 декабря 2009

Помимо данных ответов, Boost.Interprocess должен быть портативной и производительной альтернативой.
Однако если вы действительно ищете высокую производительность, отбросьте идею использования библиотеки IPC и для внутрипроцессного взаимодействия - это приведет к снижению производительности.

0 голосов
/ 08 октября 2010

Как и в приведенной выше идее AMQP, вы можете захотеть взглянуть на ZeroMQ (http://www.zeromq.org/). Я не использовал его лично, но знаю людей, которым он очень нравится.

...