美文网首页
JMS实现参数的集中式管理

JMS实现参数的集中式管理

作者: 小牛学堂 | 来源:发表于2018-10-24 10:50 被阅读0次

前言

JMS的发布订阅机制也能实现类似的功能,集群节点通过订阅指定的节点,同时使用jms对消息的过滤器功能,实现对指定参数的更新,本文将介绍通过JMS实现简单的参数集中式管理。

Maven引入

Spring相关的jar引入

目标

1.可以同时配置监听多个节点如/app1,/app2;

2.希望只需要配置如/app1,就能够监听其子节点如/app1/modual1以及子节点的子节点如/app1/modual1/xxx/…;

3.服务器启动能获取当前指定父节点下的所有子节点数据;

4.在添加节点或者在更新节点数据的时候能够动态通知,这样代码中就能够实时获取最新的数据;

5.spring配置中可以从Zookeeper中读取参数进行初始化。

虽然在实现的方式上有点区别,但是最终达成的目标是一致的,同样列出了这5条目标

实现

MQWatcher主要用来和JMS建立连接,同时订阅指定节点,建立点对点连接,过滤出需要监听的数据,更新数据,初始化数据,存储数据等

InitConfServer主要作为点对点连接的服务器端用来初始化数据

1.同时配置监听多个节点

提供一个字符串数组给用户用来添加需要监听的节点:

2.能够监听其子节点以及子节点的子节点

使用了一种和Zookeeper不一样的方式,JMS的方式是将所有的数据变更都发送到订阅者,然后订阅者通过过滤出需要的数据进行更新

对TOPIC进行了订阅,并且指定了过滤器keyFilter,keyFilter正是基于keyPatterns组装而成的

对指定的属性IDENTIFIER,通过LIKE和OR关键字进行过滤

3.服务器启动初始化节点数据

通过点对点的方式,在服务器启动时通过请求响应模式来获取初始化数据

通过对指定QUEUE请求,同时建立一个临时的响应QUEUE,然后接受一个MapMessage,用来初始化keyValueMap

4.监听节点数据的变更

通过发布订阅模式,接受所有数据,然后进行过滤,目标2中已经有相关实现

5.spring配置中可以从Zookeeper中读取参数进行初始化

通过以上的处理,可以使用如下简单的配置来达到目标:

测试

1.启动ActiveMQ

2.InitConfServer启动

用来监听集群节点的初始化请求,获取到集群节点发送来的keyPatterns,然后将符合其模式的数据封装成MapMessage发送给集群节点

以上代码只是进行了简单的模拟,提供了一个思路

3.启动Main类

4.启动TopicPublisher

定时发布数据,同时查看集群节点的Main类日志输出

日志输出如下:

详细代码svn地址:http://code.taobao.org/svn/temp-pj/DynamicConf

总结

通过JMS实现了一个简单的参数化平台系统,当然想在生产中使用还有很多需要优化的地方,本文在于提供一个思路;后续有时间准备对DynamicConf提供更加完善的方案。

相关文章

  • JMS实现参数的集中式管理

    前言 JMS的发布订阅机制也能实现类似的功能,集群节点通过订阅指定的节点,同时使用jms对消息的过滤器功能,实现对...

  • Redis实现参数的集中式管理

    前言 分布式缓存Redis也提供了类似的发布订阅功能,并且Redis本身提供了缓存和持久化的功能,本文将介绍通过R...

  • Zookeeper实现参数的集中式管理

    前言 应用项目中都会有一些参数,一般的做法通常可以选择将其存储在本地配置文件或者内存变量中;对于集群机器规模不大、...

  • Zookeeper实现参数的集中式管理

    前言应用项目中都会有一些参数,一般的做法通常可以选择将其存储在本地配置文件或者内存变量中;对于集群机器规模不大、配...

  • 1JMS基本概念

    JMS provider 实现JMS接口和规范的消息中间件 JMS message JMS的消息,消息由3部分组成...

  • ActiveMq-----2018-07-08

    ActiveMQ 和JMS的关系?----->接口和实现的关系 ActiveMq应用场景:1), JMS 规范: ...

  • ActiveMQ

    AMQ: JMS实现JMS接口的消息中间件Provider(MessageProvider):生产者Consume...

  • Java-JMS消息队列(ActiveMQ)

    认识消息队列 JMS消息队列 JMS对象模型 1)连接工厂。连接工厂(ConnectionFactory)是由管理...

  • git 小札 - 流程总览

    集中式版本管理(subversion)和分布式版本管理(git)的差异 集中式版本管理主要以文件变更列表的方式存储...

  • git的使用

    项目管理分为集中式和分布式管理 集中式:(SVN为集中式) 分布式:(git为分布式) 使用步骤: 1、初始化版本...

网友评论

      本文标题:JMS实现参数的集中式管理

      本文链接:https://www.haomeiwen.com/subject/uyjttqtx.html