当一个系统中存在多个生产者和消费者时,情况可能会变得复杂。
了解生产者和消费者流之间支持的基数非常重要。
本质上,一个生产者流可以与多个消费者流连接,但一个消费者流只能连接到一个生产者流。请注意,基数关系仅限于单个流,而不限于生产者或消费者应用程序。生产者和消费者应用程序可以各自创建多个流。
以下示例说明了生产者和消费者应用程序如何根据支持的基数使用流。
下图是一个消费者试图从多个生产者流中消费错误的例子:
在这个例子中,Stream-p2被Stream-c1和Stream-c2连接并被它们消费。然而,因为Stream-c2已经在消费Stream-p2,它也不能再消费Stream-p1。
如果消费者需要来自多个生产者的内容,那么它必须管理多个消费者流。对于本例中的消费者2,为了消费流p1和流p2,它必须创建两个单独的流,并将一个连接到流p1,一个连接到流p2。
下图是使用多个消费者流从多个生产者流中消费的消费者的示例: