消息
消息服务器解决的问题
1.性能问题,把一些与主业务无关(不需要即可执行完成)的功能通过消息的方式执行可以大大缩短主业务响应时间:在执行主业务的时候只需要将这些业相关的数据保存到消息队列,等待专门的服务从队列中获取执行即可。
2.模块解耦,微服务,模块只负责自己模块相关的业务,其他下游单据生成之类的功能直接丢给消息服务器,由下游服务读取执行。
3.秒杀:设置消息服务队列数量上限达到限量的效果,用户端只需要将相关数据丢入消息服务器即可(类似第一点),后续具体秒杀业务执行由下游服务读取消息队列执行,这样可以大大缩短秒杀响应时间。
消息服务抽象
JMS
点对点,一个消息发送至唯一的消息接收者,业务只被执行一次。
发布订阅,一个消息可以被多个订阅,多个接受者处理同一个消息。
AMQP
高级消息队列协议,跨平台的消息规范,细化了发布订阅模式。
AMQP 消息抽象
Exchanges 交换器,用于路由消息
Queues 消息队列,消息载体,存储和读取消息源
connections 连接
channels 信道
发送一条消息:指定一个交换器,指定一个key,由交换器根据key,根据交换器类型以及绑定规则路由到具体的队列
获取一条消息:直接从指定消息队列获取