1.简单的生产者-消费者模式(1对1):通过与mq建立连接,绑定特定的队列(test_queue),生产者往队列(test_queus)中发送消息(message),消费者通过持续监听队列(test_queue)拿到不同的消息.
2.复杂的生产者-消费者模式(1对n):当只存在一个生产者,而有多个消费者时.首先生产者会不断生产出消息,然后由不同的消费者去消费,此时为达到公平性,需要为每个消费者设置相同的权值;第二个问题,当消费者是信息处理者时,为保证每个信息都能被处理,因此需要在消费者处理完信息时通知生产者,然后生产者清除对应消息,一旦某个消费者连接中断,可以由另外的消费者接手它正在处理的任务,这样能达到消息不会在消费者中丢失的问题;第三个问题,如果消息队列忽然中断,那些没来得及处理的消息会发生丢失,因此需要对队列中尚未处理的消息进行持久化,这样在队列恢复时可以继续处理剩下的消息。
3.实现publish/subscribe模式:实现这种模式,会在生产者和消息队列之间增加一个exchange的角色,它负责把生产的消息推送给特定的队列,rabbitmq主要提供了四种模式(direct(根据RouteKey推送给指定的队列),topic(推送到包含指定Topic的队列中),header,fanout(推给所有绑定的队列)),然后消费者消费所关心队列中的信息.
注:
*消费者分为两种:
1).worker:它的主要工作是处理队列中的数据,因此可以创建多个达到并行的效果
2).subscribe:它要求队列中的每个消息必须发送给所有订阅者(例:博客的更新提醒)
4.实现RPC:这种模式有些特殊,首先我们得脱离生产者和消费者这种固有模式,因为对于服务调用方和服务提供方都既是某个队列的生产者同时也是某个队列的消费者.首先,建立一个request_queue,它的主要作用是储存所有的调用请求;对于每个请求,它都会建立一个临时的队列,主要是为了接受服务方提供的结果,在请求中应该包含接受结果的临时队列random_queue和每个请求独有的id(保证一个请求只接受一个对应的结果);当服务调用方请求时,先将请求放入request_queue,当服务提供方处理完成时,会将结果推送给random_queue,这时调用方会对比id,如果一致则调用完成.
RabbitMQ--阅读官方demo后自我总结
最新推荐文章于 2024-05-05 13:37:11 发布