通过Kafka Admin API执行并获取结果到客户端
2015-08-09 16:56
323 查看
目前的需求是将kafka管理的相关操作,如创建/删除/修改topic等集成到web 管理端, 但有个问题是执行的时候是打印到服务端标准输出的(控制台),没法返回给前端页面,于是,简单做了下修改,这样便完成了从标准输出获取信息,返回给前端。思路比较简单:
ByteArrayOutputStream bout = new ByteArrayOutputStream();
public Map<String, Object> topicOpt(@RequestParam Long clusterId, @RequestParam String cmd) { Cluster cluster = clusterService.findByClusterId(clusterId); String topicName = null; String msg = ""; if (cluster!=null && cmd!=null) { String[] options = cmd.trim().replaceAll("\\s+", ",").split(","); for (int i=0; i<options.length; i++) { if (options[i].equals("--zookeeper")) { options[i+1] = cluster.getZkConnect(); } if (options[i].equals("--topic")) { topicName = options[i+1]; } } //调用管理命令创建topic PrintStream out = System.out; PrintStream ps = new PrintStream(bout); System.setOut(ps); // 这样做的原因是从标准输出流中获取命令执行的输出信息,返回给前端 TopicCommand.main(options); msg = new String(bout.toByteArray());
<span style="white-space:pre"> </span>bout.reset(); System.setOut(out); // 恢复现场 // 将元数据添加入数据库表中 Topic topic = new Topic(); topic.setClusterId(clusterId); topic.setName(topicName); topic.setRemarks(cmd); topicService.addTopic(topic); } return JsonResult.resultSuccess(msg); }
相关文章推荐
- C++ STL的底层数据结构都是啥
- 华为上机 取石子游戏
- I学霸官方免费教程二(拓展):Java软件开发环境的安装与配置
- hdu5358 First One
- uva 1486 Transportation (费用流+拆边)
- 《围住神经猫》的逃跑路径算法
- 轻量级文本编辑器,Notepad最佳替代品:Notepad++
- Android Format的使用
- Linux下用php调用C接口(扩展)的资料
- 管道,信号量,共享内存,socket的实际使用场景和NSPipe管道的使用
- jQuery中的Ajax
- (算法:二分查找)在排序数组中,找出给定数字出现的次数
- 2015公务员工资改革消息:广州人社局长称基层公务员工资肯定会增不少
- Java的date和以datetime为字段的数据库的处理办法
- hdu-2114-Calculate S(n)
- 为什么你宁愿每周工作90小时,也不做任何改变?(转载)
- 使用代码为textview设置drawableLeft
- 大苏格兰2015年中学等级考试的一道初等数学题
- Java查看List扩容后的容量
- 10.1——pair,map,set,multimap,multiset