storm 远程过程调用及client调用

server端:

import java.util.Map;

import org.apache.thrift7.TException;

import backtype.storm.Config;

import backtype.storm.ILocalDRPC;

import backtype.storm.LocalCluster;

import backtype.storm.LocalDRPC;

import backtype.storm.StormSubmitter;

import backtype.storm.drpc.DRPCSpout;

import backtype.storm.drpc.LinearDRPCTopologyBuilder;

import backtype.storm.generated.DRPCExecutionException;

import backtype.storm.task.OutputCollector;

import backtype.storm.task.TopologyContext;

import backtype.storm.topology.OutputFieldsDeclarer;

import backtype.storm.topology.base.BaseRichBolt;

import backtype.storm.tuple.Fields;

import backtype.storm.tuple.Tuple;

import backtype.storm.tuple.Values;

public class RemoteDRCPTopology {

public static class drcpBolt extends BaseRichBolt {

private Map stormConf;

private TopologyContext context;

private OutputCollector collector;

public void prepare(Map stormConf, TopologyContext context,

OutputCollector collector) {

this.stormConf = stormConf;

this.context = context;

this.collector = collector;

}

/**

* 第一个 :函数名 第二个 :參数

*/

public void execute(Tuple input) {

String value = input.getString(1);

value = "hello" + value;

this.collector.emit(new Values(input.getValue(0), value));

}

public void declareOutputFields(OutputFieldsDeclarer declarer) {

declarer.declare(new Fields("name", "value"));

}

}

public static void main(String[] args) throws Exception, TException {

LinearDRPCTopologyBuilder topologyBuilder = new LinearDRPCTopologyBuilder(

"aaa");

topologyBuilder.addBolt(new drcpBolt());

Map stormConf;

StormSubmitter.submitTopology(RemoteDRCPTopology.class.getSimpleName(),

new Config(), topologyBuilder.createRemoteTopology());

}

}

client:

import backtype.storm.utils.DRPCClient;

public class ClientRemoteDRPC {

public static void main(String[] args) throws Exception{

DRPCClient drpcClient = new DRPCClient("192.168.80.20", 3772);

String res = drpcClient.execute("aaa", "哈哈哈444我被远程调用了");

System.out.println(res);

}

}

结果输出为:

hello哈哈哈444我被远程调用了

时间: 2024-08-07 04:33:17

storm 远程过程调用及client调用的相关文章

cxf-rs client 调用

org.apache.cxf.jaxrs.client.WebClient get调用 @GET @Path("/echo/{input}") @Produces("text/plain") public String ping(@PathParam("input") String input) { return input; } @Test public void testPing() throws Exception { WebClient

Java - 在WebService中使用Client调用三方的RestAPI

背景 近期,由于项目的要求需要在自己的webservice中调用远程的WebAPI(Restful format).自己的webservice程序是用Java编码写的,所以需要在其中实现一个Client来调用远程的Restful接口. 选型 其实在自己的项目里面也有类似的调用,当时使用的是“JAXRSClientFactory”获得静态代理client. 由于这种方式需要依赖于远程调用的webservice接口(需要引入别人的jar包).这就造成了高耦合.因此不适用. 所以需要以一种低耦合的方式

【ITOO】WCF——Client调用WCF服务

三步走已经走了两步,一个WCF服务发布好之后,就等待着用的人来调用了,它只向外提供一个接口,暴露地址和契约,不暴露服务是如何实现的.接下来就说说客户端调用WCF服务的事. 其实说到调用就很简单了,首先我们要让我们所需的服务识别我们,即配置好同样的终结点信息,然后添加服务的引用,最后调用相应的方法即可. 如配置文件中: <applicationSettings> <WebDemoClient.Properties.Settings> <setting name="We

【nodejs】使用Node.js实现REST Client调用REST API

最近在产品中开发基于REST的API接口,结合自己最近对Node.js的研究,想基于它开发一个REST Client做测试之用. 通过初步研究,Node.js开发HTTP Client还是挺方便的. 选用Node的理由: 1. 使用完全基于JavaScript的Node测试JSON格式的数据,非常之方便 2. Node有很好的社区支持.(现在GitHub上已成了JavaScript最大的开源社区) By Example: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1

Storm入门学习随记

推荐慕课网视频:http://www.imooc.com/video/10055 ====Storm的起源. Storm是开源的.分布式.流式计算系统 什么是分布式呢?就是将一个任务拆解给多个计算机去执行,让许多机器共通完成同一个任务, 把这个多机的细节给屏蔽,对外提供同一个接口.同一个服务,这样的系统就是分布式系统. 在多年以前并没有非常范用的分布式系统,即使存在,也都是限定在指定的领域, 当然,也有人尝试从中提取出共通的部分,发明一个通用的分布式系统,但是都没有很好的结果. 后来,Googl

storm安装

0安装JDK wget --no-check-certificate --no-cookie --header "Cookie: oraclelicense=accept-securebackup-cookie;" http://download.oracle.com/otn-pub/java/jdk/8u45-b14/jdk-8u45-linux-x64.rpm 使用rpm -ivh jdk-8u45-linux-x64.rpm进行安装 检查安装Javac 1:centOS安装Zer

storm - 简介

一 Storm简介 Storm是Twitter开源的一个类似于Hadoop的实时数据处理框架,它原来是由BackType开发,后BackType被Twitter收购,将Storm作为Twitter的实时数据分析系统. 实时数据处理的应用场景很广泛,例如商品推荐,广告投放,它能根据当前情景上下文(用户偏好,地理位置,已发生的查询和点击等)来估计用户点击的可能性并实时做出调整. twitter列举了storm的三大作用领域: 1.信息流处理(Stream Processing) Storm可以用来实

Storm的DRPC

RPC:Remote Procedure Call DRPC:Distributed RPC Hadoop提供了RPC的实现机制,实现方法见:<>,本文主要介绍Storm的DRPC. 1.Storm DRPC工作流程 Storm的DRPC由DRPC Server和一个特殊的topology组成.DRPC Server主要起协调客户端和topology的作用,其接收客户端的请求,并将请求发送给topology,然后将topology的处理结果返回给客户端. 下面是官网给出的流程图: 1)客户端向

Storm启动流程分析

Storm启动流程分析 1.客户端运行storm nimbus时,会调用storm的python脚本,该脚本中为每个命令编写了一个方法,每个方法都可以生成一条相应的Java命令. 命令格式:java -server xxx.ClassName  -args nimbus--->Running:/export/servers/jdk/bin/java  -server  backtype.storm.daemon.nimbus supervisor--->Running:/export/serv