非常感谢http://wubin850219.iteye.com/blog/1003840
在前面的已经提到了一对一的情况;现在一个生产者与多个消费者的情况(Work Queues)。Work Queues的示意图如下:
对于上图的模型中对于c端的worker来说。RabbitMQ服务器可能一直发送多个消息给一个worker,而另一个可能几乎不做任何事情。这样就会导致一个worker很忙,而另一个却很空闲。这种情况可能都不想出现。如何解决这个问题呢。当然最理想的情况是均匀分配消息给每个worker。我们可能通过channel . basicQos(1)方法(PRefetchCount = 1 )来设置同一时间每次发给一个消息给一个worker。示意图如下:
P端的程序如下:
java代码多次运行此程序并传入的参数分别为“First message ”,“Secondmessage ”,“Third message ”,“Fourth message ”,“Fifth message ”
C端的程序如下:
Java代码开启两个worker分别运行。运行结果如:
c1的结果:
Java代码c2的结果
Java代码
新闻热点
疑难解答