利用基于消息队列中间件的通信技术实现一个分布式随机信号分析系统,具体要求:
- 随机信号产生器节点每隔100毫秒左右就产生一个正态分布的随机数字,并作为一个消息发布。
- 随机信号统计分析节点对信号进行如下分析:
- 计算过去$N$个随机信号的均值和方差($N$为常量,可设置);
- 计算所有历史数据中的最大值和最小值;
- 定时地将分析结果打包成一个新消息并通过MOM发布出去。
- 实时数据显示节点实现如下功能:
- 实时绘制过去一段时间内随机信号的折线图;
- 实时显示随机信号统计分析结果。
- 消息中间件任选。
- 中间件 本次实验采用Apache软件基金会所研发的开放源代码消息中间件ActiveMQ提供的消息队列模式,利用Java语言配合JMS完成目标。
- 设计思想
- 设计类
Publisher.java
作为生产者,其作用是每隔 100ms 向消息队列 Number 发布一个服从标准正态分布的随机数作为信号值。 - 设计类
Processor.java
(包括Processor.java
和NumberListener.java
)作为消费者,其作用是从消息队列 Number 中读取数据,并进行运算处理,求出实验要求的均值、方差等数值,并每隔 2s 将运算结果发布给消息队列 Result,等待可视化处理。 - 设计类
ResultDisplay.java
(包括ResultDisplay.java
和ResultListener.java
)作为数据分析可视化程序,其作用是从消息队列 Result 中读取运算结果,并利用tablesaw
可视化工具绘制折线图,并将其展现至网页中,每隔 2s 读取并更新一次数据。
- 设计类
- 下载配置ActiveMQ后,在其bin目录下通过命令行输入activemq start命令启动ActiveMQ服务,同时可以进行监测。
- 利用maven工具编译项目后依次运行
Publisher.java
、Processor.java
、ResultDisplay.java
即可得到实验结果。