Мне нужно разработать шину сообщений для процессов для отправки, получения сообщений друг от друга. В настоящее время мы работаем в Linux с целью переноса на другие платформы позже.
Для этого я использую ZeroMQ через TCP. Шаблон - PUB-SUB с форвардером. Моя шина работает как отдельный процесс, и все клиенты подключаются к SUB-порту для приема сообщений и PUB для отправки сообщений. Каждый процесс подписывается на сообщения уникальным тегом. A send
вызов от процесса отправляет сообщения всем. A receive
вызывает получение этого процесса сообщений, помеченных тегом этого процесса. Это нормально работает.
Теперь мне нужно обернуть материал ZeroMQ. Мои клиенты должны предоставить уникальный тег. Мне нужно поддерживать глобальный список тегов по сравнению с параметрами контекста и сокетов ZeroMQ. Когда клиент говорит,
initialize_comms("name");
Шина должна проверить, уникально ли это имя, создать контексты и сокеты ZeroMQ. Точно так же, если клиент говорит receive("name");
, шина должна получать сообщения с этим тегом.
Подводя итог проблемам, с которыми я столкнулся;
- Нужно ли все-таки добиться этого, используя средства, предоставляемые ZeroMQ?
- Является ли ZeroMQ правильным инструментом для этого, или я должен искать что-то вроде nanomsg?
- Является ли PUB-SUB с форвардером правильным шаблоном для этого?
- Или я здесь что-то не хватает?