参考答案:
【问题1】
(1)提交订单
(2)发布订单
(3)外卖平台
(4)交付餐品
(5)配送员
【问题2】
(1)事件源
(2)事件管理器
(3)事件处理器
【问题3】
在基于消息队列的点对点模式中,消息生产者生产消息并发送到消息队列(Queue)中,然后消息消费者从Queue中取出并且消费消息。消息被消费以后,Queue 中不再有存储,所以消息消费者不可能消费到已经被消费的消息。Queue 支持存在多个消费者,但是对一个消息而言,只有一个消费者可以消费。
如需求描述,任何 一个外卖配送订单(消息)都只能被一个配送员(消费者)接单,所以,应该采用基于消息队列的点对点模式。
详细解析:
【问题1】
根据题干“餐饮商家在该O2O外卖平台发布配送订单后,根据餐饮商家、订餐用户、外卖配送员位置等信息,以骑手抢单、平台派单等多种方式为订单找到匹配的外卖配送员,完成配送环节,形成线上线下的
O2O
闭环。”可知第二空应该为(2)发布订单,第五空应该为(5)配送员,第三空应该为(3)外卖平台。订餐用户应该先提交订单给外卖平台,外卖平台才能发布配送订单,所以第一空应该为(1)提交订单。配送员配送外卖到送餐地址之后应该通知用户取餐并把餐品交付给用户,所以第四空应该为(4)交付餐品。
【问题2】
事件:能够激活对象功能的动作,当发生动作后会给所涉及对象发送一条消息,对象便可执行相应的功能。事件源负责广播一些事件,系统中的其他处理器在事件管理器中注册自己感兴趣的事件,并将自己的过程与某个事件相关联,事件管理器通过注册调用相关的处理器。
事件驱动过程:事件源,事件管理器,事件处理器,由事件源发表事件,由事件管理器来决定分派事件给事件处理器来处理。所以(1)应该为事件源,事件源发表事件。(2)(3)应该分别为事件管理器和事件处理器,由事件管理器来决定分派事件给事件处理器来处理。
【问题3】
消息队列包括两种模式,点对点模式(point to point,
queue)和发布/订阅模式(publish/subscribe,topic)
1. 点对点模式
点对点模式下包括三个角色:
消息队列
发送者 (生产者)
接收者(消费者)
消息发送者生产消息发送到 queue 中,然后消息接收者从
queue 中取出并且消费消息。消息被消费以后,queue 中不再有存储,所以消息接收者不可能消费到已经被消费的消息。
点对点模式特点:
(1)每个消息只有一个接收者(Consumer)(即一旦被消费,消息就不再在消息队列中);
(2)送者和接发收者间没有依赖性,发送者发送消息之后,不管有没有接收者在运行,都不会影响到发送者下次发送消息;
(3)接收者在成功接收消息之后需向队列应答成功,以便消息队列删除当前接收的消息;
2. 发布/订阅模式
发布/订阅模式下包括三个角色:
角色主题(Topic)
发布者(Publisher)
订阅者(Subscriber)
发布者将消息发送到 Topic,系统将这些消息传递给多个订阅者。
发布/订阅模式特点:
(1)每个消息可以有多个订阅者;
(2)发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。
(3)为了消费消息,订阅者需要提前订阅该角色主题,并保持在线运行;
因为任何一个外卖配送订单(消息)都只能被一个配送员(消费者)接单,而不是每个消息可以有多个订阅者,所以,应该采用基于消息队列的点对点模式。