RabbitMQ是一个消息代理。它的核心原理是接收和发送消息。
RabbitMQ和消息,有一些专有名词,如下:
生产(Producing)的意思是发送,发送消息的程序就是一个生产者(producer)。
队列(queue)的意思是名称,消息通过你的应用程序和RabbitMQ进行传输,它们能够只存储在一个队列(queue)中。队列(queue)没有任何限制,你要存储多少消息都可以——基本上是一个无限的缓冲。多个生产者(producers)能够把消息发送给同一个队列,同样,多个消费者(consumers)也能够从一个队列(queue)中获取数据。
消费(Consuming)和获取消息是一样的意思。一个消费者(consumer)就是一个等待获取消息的程序。
一般生产者,消费者和代理不必部署在同一台机子上。
要发送消息,我们必须首先定义一个queue(队列),然后我们才能把消息发送给queue;
queue 的定义具有幂等性(一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相等),因此定义的queue已经存在,不会重复定义,且不能修改。
Work Queues(别名:Task Queue)是为了避免立即做一个资源密集型任务,而不得不等待它完成。我们可以把这个耗时的任务封装提取起来作为message,发送给一个queue。一个Worker 后台进程会获取task,然后执行他。当有多个Workers 时,他们平分这些task。
Round-robin dispatching 循环调度