新增C2组件:移位运算
主要代码
public class Yiwei extends C2Component{
public Yiwei(String host, int port, String user, String pwd) {
super(host, port, user, pwd,"Yiwei");
}
@Override
Msg getResult(String msg) {
Msg m= JSON.parseObject(msg,Msg.class);
if(m.getSymbol().equals("<<")){
m.setResult(m.getX() << m.getY());
}
return m;
}
}
调用
cal.AddWorkItem(new Msg("<<",1).ConvertToJson());
不同电脑之间的分布式功能调用:
两台主机组件和消息中间件配置:
主机IP | ADD | YIWEI | SUB | MUL | Cal | Activemq消息中间件 |
---|---|---|---|---|---|---|
192.168.199.211 | √ | √ | √ | |||
192.168.199.158 | √ | √ | √ |
192.168.199.211开启activemq消息中间件。并且启用SUB、MUL组件:
![](https://img-blog.csdnimg.cn/img_convert/d3e0dd2c2feb79a68eada2dd61f577e2.png)
192.168.199.158 开启ADD、YIWEI组件
![](https://img-blog.csdnimg.cn/img_convert/a263545cfad256ef94e6b485f42bc0f9.png)
192.168.199.158开启CAL,并添加计算任务:
![](https://img-blog.csdnimg.cn/img_convert/02fee8fa7416e67d4364f11e2fd08d7c.png)
两台软件内部配置组件IP:
将IP配置为消息中间件所在的主机IP,实现对消息队列的监听。
192.168.199.158 IP配置如下:
![](https://img-blog.csdnimg.cn/img_convert/1237c32895f75f6788432d2403901b62.png)
192.168.199.211 IP 配置如下:
![](https://img-blog.csdnimg.cn/img_convert/d517b0025c5c32217096ef6c110231b2.png)
调试过程
先开启各个组件,再运行Cal任务。
打印了一些调试信息如下:
192.168.199.158 控制台打印:
![](https://img-blog.csdnimg.cn/img_convert/ad416a6f97ca2227b37e4c5380616df3.png)
192.168.199.211 控制台打印:
![](https://img-blog.csdnimg.cn/img_convert/788d88c357195ca29d5f4c5765471488.png)
过程描述
C2风格是使用异步消息为主的连接件组织功能(构件)的一种模式。从上面我们可以大概捋出来过程。我认为主要就是各个组件(它们是分布式的,可以在不同的地方)都对消息队列进行监听,Cal添加任务,根据符号判断用来分发到各个不同的队列。然后各个组件监听到自己的队列有新的任务加进来,就调用getResult进行处理,然后再从"目标队列:queue://Cal-from:Yiwei-send:192.168.199.211-{"result":8,"symbol":"<<","x":4,"y":1}"这种打印信息可以了解到,Yiwei又返回信息给Cal告诉他我已经做完了。然后Cal进行下一个任务。
总的来说,实现了在不同的地方(分布式)完成一个任务不同步骤的计算。