首先,它有点挑剔,但可能足以提及:“ 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真正设计的目的.