https://blog.csdn.net/csdnsjg/article/details/80152815
https://jingyan.baidu.com/article/219f4bf798e0cfde442d3831.html
类似spring 、 maven 这类插件,需要再eclipse中提前安装;
1、首先下载eclipse 对应的spring 的版本,查看eclipse 版本在 help-- about eclipse 中
2、找到打开eclipse,选择 "Help" --> "Install New Software" --> "add" -->"Archive" --> 选择刚才下载好的springsource-tool-suite “打开”--> "OK"
3、查看是否安装成功,点击“Window”--> "Preferences"查看是否安装成功
配置好后,新建spring 调用jsf 接口:
1、 file --- new -- spring starter project
2、maven 依赖配置添加,在pom.xml 中,可以依照官方的xml文档,只需要添加需要的依赖即可
3、在spring 项目下面,新建源文件,里面包含log4j.xml 和 jsf-consumer.xml 也是依据官方的文档进行修改,传入参数改称需要的即可
4、然后修改接口调用函数,导入相关的包,这里采用spring集成的方式调用接口
5、参考如下:
package com.example.demo;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.jd.erqing.application.jsf.VenderInfoService;
import com.jd.fastjson.JSONObject;
public class DemoApplicationTests {
/**
* SLF4J logger
*/
private final static Logger LOGGER = LoggerFactory.getLogger(DemoApplicationTests.class);
/**
* Method Name main
*
* @param args Return Type void
*/
public static void main(String[] args) {
ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext("/jsf-consumer.xml");
VenderInfoService service = (VenderInfoService) appContext.getBean("venderInfoService");
while (true) {
try {
long start = System.currentTimeMillis();
String result = service.venderDownAmountList("10021");
long end = System.currentTimeMillis();
System.out.println("耗时:"+(end - start));
System.out.println(result);
LOGGER.info("response msg from server :{}", result);
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
try {
Thread.sleep(2000);
} catch (Exception e) {
}
}
}
}
还有使用API的方式(不依赖spring)调用JSF服务的方式。
实例如下:
package com.example.demo;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SparkSession;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.jd.erqing.application.jsf.VenderInfoService;
import com.jd.fastjson.JSONObject;
import com.jd.jsf.gd.config.ConsumerConfig;
import com.jd.jsf.gd.config.RegistryConfig;
public class DemoApplication {
/**
* SLF4J logger
*/
private final static Logger LOGGER = LoggerFactory.getLogger(DemoApplication.class);
/**
* Method Name main
*
* @param args Return Type void
*/
public static void main(String[] args) {
// // 引入杰夫接口
// ClassPathXmlApplicationContext appContext = new ClassPathXmlApplicationContext("/jsf-consumer.xml");
// VenderInfoService service = (VenderInfoService) appContext.getBean("venderInfoService");
RegistryConfig jsfRegistry = new RegistryConfig();
jsfRegistry.setIndex("i.jsf.jd.com");
LOGGER.info("实例RegistryConfig");
// 服务提供者连接注册中心,设置属性
ConsumerConfig<VenderInfoService> consumerConfig = new ConsumerConfig<VenderInfoService>();
consumerConfig.setInterfaceId("XXXXXXXXXXXXXXXXXXXXXXXXX");
// consumerConfig.setAlias("XXXXXXXXXXXXXXXXX"); // 线下
consumerConfig.setAlias("XXXXXXXXXXXXXXXXXXXX"); //线上
consumerConfig.setProtocol("jsf");
Map<String,String> parameter = new HashMap();
parameter.put(".token", "XXXXXXXXXXXXXXXXXXXX");
// parameter.put("hide", "true");
consumerConfig.setParameters(parameter);
// 如果外面已经有xml配的注册中心,使用consumerConfig.setRegistry(RegistryFactory.getRegistryConfigs());
consumerConfig.setRegistry(jsfRegistry);
LOGGER.info("实例ConsumerConfig");
VenderInfoService service = consumerConfig.refer();
LOGGER.info("得到调用端代理:{}", service);
// // 读入店铺id数据
// SparkSession spark = SparkSession.builder().appName("demo_spark").enableHiveSupport().getOrCreate();
// spark.sql("insert overwrite table dev.dev_spark_demo_temp partition (dt = '2019-08-08') select pop_vender_id, sale_ord_id from app.app_sjzt_payout_apply_with_order where dt = '2019-08-05'");
// Dataset<Row> vender_set = spark.sql("select pop_vender_id from app.app_sjzt_payout_apply_with_order where dt = '2019-08-05' limit 2000");
//
// // 将数据去重,转换成 List<Row> 格式
// vender_set = vender_set.distinct();
// vender_set = vender_set.na().fill(0L);
// JavaRDD<Row> vender= vender_set.toJavaRDD();
// List<Row> vender_list = vender.collect();
//
// // 遍历商家id,调用jsf接口
// for(Row row:vender_list) {
// String id = row.getString(0);
// String result = service.venderDownAmountList(id);
// System.out.print(id + " "+ result + "
");
// }
//
// System.out.println( "Hello World!" );
while (true) {
try {
long start = System.currentTimeMillis();
String result = service.venderDownAmountList("10021");
long end = System.currentTimeMillis();
System.out.println("耗时:"+(end - start));
System.out.println(result);
LOGGER.info("response msg from server :{}", result);
} catch (Exception e) {
LOGGER.error(e.getMessage(), e);
}
try {
Thread.sleep(2000);
} catch (Exception e) {
}
}
}
}