Spring Cloud Bus

消息总线

通过一个消息代理的中间件,在程序之间起到信息调度并最小化程序之间的依赖的作用, 是的应用程序可以高效的解耦通信过程。 消息的中间件来接收和分发消息, 并根据设定好的消息处理流来转发给正确的程序。 它包括独立的通信和消息传输协议, 能够实现 组织内部和组织之间的通信。 设计代理的目的及时为了能够从应用程序中传入消息, 并执行一些特定的操作

  • 消息路由到一个或者多个地方
  • 消息转换为其他的表现形式
  • 执行消息的聚集,消息的分解, 并将消息发到目的地, 然后重新组合, 响应给消息用户
  • 调用web服务来检索数据
  • 响应事件或者错误
  • 使用发布-订阅模式来提供内容或基于主题的消息路由

目前比较流行的中间件有:

  • ActiveMQ
  • Kafka
  • RabbitMQ
  • RocketMQ

spring cloud 支持kafka , rabbitmq 来实现消息总线的;

RabbitMQ实现消息总线

RabbitMQ 实现了高级消息队列协议(AMQP : Advanced Message Queueing Protocal)的开源消息代理软件, 也称为面向消息的中间件。 RabbitMQ是高可用,可升缩而闻名的Erlang语言编写而成的, 其集群和故障转移是构建在开发电信平台框架之上的。

rabbitmq 的特定如下

  • 消息方向
  • 消息队列
  • 消息路由
  • 可靠性
  • 安全性

QMQP 要求消息的提供者和客户端的接受者的行为要实现了对不同供应商可以用相同的方式来进行相互的操作。 可以在中间件标准中, 主要是在建立 Api级别的 , 比如jms , 集中于通过不同中间件来实现和建立标准化的程序间的互相操作, 而不是多个中间产品间互相操作。

spring cloud 采用rabbitmq 实现的消息总线demo 可以参考地址: https://ninuxgithub.github.io/2019/01/scpost8/

代码略 ……

通过post访问:http://localhost:8881/actuator/bus-refresh?destination=config-client 访问之后 , 其实是对告诉应用程序再次读取远程仓库git里面的配置, 并且应用到程序里面; 这样就实现了应用程序的在线的配置的切换 一定要是post方式 , 可以通过postman 发送一个http请求