我一直在与qpid工作,现在我正在尝试移动到broker较少的消息系统,但我真的很困惑在Pub Sub模式中的网络流量。我读了以下文档: http://www.250bpm.com/pubsub#toc4 我真的很困惑如何实现订阅转发?酒吧子实施零mq 3.xx
我认为零mq必须是不可知的底层网络拓扑,但它似乎不是。每个节点如何知道要转发什么和不转发什么(例如:在eth网络中,可能有数百万用户和发布者,消息树对我来说听起来不太可行。那么甚至不知道关于零mq的存在,他们如何将数据包转发给连接到它们的订阅者,对于他们来说,它只是一个普通的数据包,所以即使它的数据包是同一个数据包,他们也只是转发多份数据包? 我不是网络专家可能是我缺少一些关于消息树的明显信息以及它是如何创建的? 请问您可以给出某些示例情况如何创建此分发树,以及确切创建哪些节点是xpub和xsub套接字?
是设备在链接中使用)就像一个经纪人,在整篇文章中它似乎是李ke设备就是任何一般中介跳,它不知道任何关于零mq套接字(只是一个随机网络跳),如果它确实是一个中介类的东西,这是否意味着pub sub,消息树中的所有节点必须满足作为设备的定义,因此它不是一个更少的设计?
另外在树形图中(来自链接,由P,D,C组成),我最初认为C和C是两个订户,而P是唯一的发布者(D只是随机跳跃),但现在看起来我们有D作为零mq。 C订阅D和D订阅P吗?或者C同时只订阅P(为了更通用,每个节点是否只订阅其父节点)。对于新手问题抱歉,但似乎我在这里显而易见的东西缺少,如果有人能够提供更多的见解,这将是很好的。
因此,在消息传递树图中,中间设备实际上是订阅者的发布者?因此,对于像a-> b-> c这样的网络,其中a是唯一的发布者和b,c仅仅是同一主题的订阅者,消息将被发送两次(一次为b,一次为c,即使它是更聪明的发送消息只有一次,b可能刚刚通过它,但由于b不知道c的存在,消息将会跳到b跳两次)? – user179156 2012-04-17 16:02:57
@ user179156您无法将用户套接字连接到另一个用户套接字,因此您的a-> b-> c示例没有意义。我想你的意思是b是路由器。在这种情况下,a只发送一次消息,甚至不知道c。 – Oktalist 2013-05-08 13:37:58
@ user179156对于b <-a->这种情况,其中两个连接共享一些基础设施,MQ不能期望知道这一点,您可以自行设计您的zeromq套接字拓扑以更好地适应您的情况。你可能想要一个经纪人。 – Oktalist 2013-05-08 13:46:51