https://*.com/a/33888439/156458说
D-Bus didn’t used to be a Linux (i.e. kernel) IPC, but an additional
middleware IPC. But in the course of introduction of 07001,
D-Bus became for several Linux distributions a part of the basic
system.
Wikipedia说D-BUS是“ IPC守护程序”.
D-Bus是否算作
> Message-oriented_middleware,或
> Message queue?
我听说Zeromq,RabbitMQ,Kafka也是用于IPC的中间件.
Zeromq,RabbitMQ,Kafka是否与D-Bus处于同一级别(高于Linux IPC方法的级别)? Some将ZeroMQ与D-Bus进行了比较,所以我想知道它们是否可以彼此替代?
解决方法:
首先,它有点挑剔,但可能足以提及:“ D-Bus”是一种协议,通常与消息总线守护程序(通常为dbus-daemon一起使用)一起使用.可以在没有守护程序的情况下使用该协议(用于在同一台计算机上的进程之间进行对等消息传递),通过网络或任何所需的协议.该协议仅定义类型系统,消息结构和调用语义.
对于该答案的其余部分,我将假定“ D-Bus”是指(与大多数人一样)协议和dbus-daemon的组合.
Does D-Bus count as message-oriented middleware?
有点.*说,MOM允许存储,路由或转换消息以及异步性. D-Bus实现消息排队(但如果对等点未连接到总线则不执行;在这种情况下,将错误返回给发送方),消息的路由有限(广播或单播),并且不进行消息转换. D-Bus客户端库与轮询循环一起提供了异步性.
Does D-Bus count as a message queue?
有点.如上所述,D-Bus在dbus-daemon中实现消息的有序排队,直到接收方读取它们为止.如果守护程序重新启动或对等方断开连接,则不会在磁盘上存储队列. D-Bus specification定义了D-Bus进行消息排序的保证.
Is D-Bus like ZeroMQ?
我对ZeroMQ不太了解,但是似乎关键的区别在于D-Bus仅用于本地IPC,而ZeroMQ也针对网络上多台计算机之间的IPC.尽管可以通过TCP运行D-Bus,但这不是官方支持的配置,也不是D-Bus真正设计的目的.