有没有一种方法可以在不使用服务器进程的情况下从命令行实现发布/订阅模式?这只需要在一台机器上工作。
我要避免没有服务器进程而要避免的主要事情是配置机器以使用这些工具。我也非常渴望不必处理服务器进程即将终止的可能性。
这可能看起来像:
# client 1
subscribe name | while read line; do echo $line; done
# client 2
subscribe name | while read line; do echo $line; done
# server
echo message | publish name
必须以不影响其他订户的方式将所有新订户的通知通知所有订户,并且服务器不必跟踪订户已收到的数据。这使得FIFO不能用于此目的。具有讽刺意味的是,常规文件将完全满足您的要求,因为常规文件上的文件描述符会跟踪文件更改。您可以将其与覆盖结合使用,以确保在进行新覆盖之前发布所有更改,这意味着您仅存储一条消息。
touch pubsub
tail -f pubsub | while read line; do echo $line; done
tail -f pubsub | while read line; do echo $line; done
echo "message" | cat > pubsub
您将在标准错误中收到“文件被截断”的错误,这是预期的行为,但是如果您不想看到它,请添加2> / dev / null
tail实际上是在做读取和echo的所有工作,但其写法是这样的,因为我假设您想将其合并到脚本中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句