Как настроить несколько подписчиков и специальных издателей с помощью `nncat` - PullRequest
0 голосов
/ 03 июля 2019

Технически это не nanomsg-, а nng-вопрос.

Мне нравится, когда несколько подписчиков и издателей работают только изредка (ad-hoc).

В справочной странице для nngcat [1] я нашел этот пример для pubsub:

$ addr=ipc:///grandpa_clock
$ nngcat --pub --listen=${addr} --data "cuckoo" --interval 3600 &
$ nngcat --sub --dial=${addr} --quoted &
"cuckoo"

Что, кажется, работает. :)

Теперь я ожидаю, что если я уроню --interval, он отправит ровно одно сообщение, которое должно быть получено подписчиком. Но ничего не появляется.

Насколько я понимаю, подписчик должен использовать listen (псевдоним для привязки к сокету), а издатель должен использовать dial (псевдоним для подключения к сокету) - так как подписчик постоянно работает процесс, в то время как издатель может запускаться повторно, чтобы выдавать одно сообщение за цикл.

Если изменить команды на

$ addr=ipc:///tmp/x
$ nngcat --sub --listen=${addr} -A
$ nngcat --pub --dial=${addr} --data "cuckoo"

похоже, работает как положено, но при попытке подключить 2й подписчик получаю следующее сообщение об ошибке:

Unable to listen on ipc:///tmp/x: Address in use

Таким образом, я предполагаю, что мой вопрос: как я могу подключить несколько подписчиков, отправляя сообщения с издателем на основе (за раз) (* ad-hoc)?

Кроме того, я хотел бы спросить, можно ли заставить nncat читать данные из STDIN, что-то вроде:

date | nncat --pub --dial=${addr} --file -

[1] https://nanomsg.github.io/nng/man/v1.1.0/nngcat.1

...