是否存在为了用消息队列而引入呢?所以这里我们需要非常明确我们的架构目标,一般来说,消息队列能够提供以下几个方面的帮助:
1,保证消息的传递;
如果发送消息时接收者不可用,消息队列会保留消息,直到成功地传递它;
2,提供异步的通信协议;
消息的发送者将消息发送到消息队列后可以立即返回,不用等待接收者的响应,消息会被保存在队列中,直到接收者取出它;
3,解耦;
只要消息格式不变,即使接收者的接口、位置、或者配置改变,也不会给发送者带来任何改变;相反的,例如,远程过程调用(RPC)或者服务间通过socket建立连接,如果对方接口改变了或者对方ip、端口改变了,那么另一方需要改写代码或者改写配置;
4,提供路由;
发送者无需与接收者建立连接,双方通过消息队列保证消息能够从发送者路由到接收者,甚至对于本来相互网络不通的两个服务,也可以提供消息路由。
细节方面的关注:
1,支持并发模式和顺序模式