Java 自动从路径读取JSON
我使用以下代码从项目文件夹中读取JSON,然后执行kafka生产者代码 现在,它处于Java 自动从路径读取JSON,java,apache-kafka,Java,Apache Kafka,我使用以下代码从项目文件夹中读取JSON,然后执行kafka生产者代码 现在,它处于while循环中,因此代码执行是连续进行的 如果我想替换同一路径中的新“test.json”。预计这一次,代码将自动读取同一项目文件夹中正在更新的新“test.json”。如果在同一路径中有任何新的“test.json”被更新,如何让此代码自动读取 如果我在路径中复制/粘贴一个新的“test.json”,那么下面的现有代码将不会读取 public void doPost(HttpServletRequest re
while循环中
,因此代码执行是连续进行的
如果我想替换同一路径中的新“test.json”。预计这一次,代码将自动读取同一项目文件夹中正在更新的新“test.json”。如果在同一路径中有任何新的“test.json”被更新,如何让此代码自动读取
如果我在路径中复制/粘贴一个新的“test.json”,那么下面的现有代码将不会读取
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
while (true) {
try {
URL url = getClass().getResource("test.json");
File file = new File(url.getPath());
Properties props = new Properties();
props.put("bootstrap.servers", "yupsectory.selet.com:9092");
props.put("client.id", CLIENT_ID);
props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");
props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");
String jsonData = readFile(file.getAbsolutePath());
JSONObject jobj = new JSONObject(jsonData);
System.out.println("jarr: " + jobj.getJSONObject("data").toString());
Yupsectoryproducer<String, String> producer = new Yupsectoryproducer <>(props);
//Use this util to pull the context that needs to be propagated from the HttpServletRequest
Map<String, String> headermap = YupsectoryContextUtil.buildContextMap(request);
//Sending a message
ProducerRecord<String, String> record = new ProducerRecord<String, String>(topic, jobj.getJSONObject("data").toString());
producer.send(record, headermap);
producer.close();
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void doPost(HttpServletRequest请求,HttpServletResponse响应)
抛出IOException、ServletException{
虽然(正确){
试试{
URL=getClass().getResource(“test.json”);
File File=新文件(url.getPath());
Properties props=新属性();
props.put(“bootstrap.servers”,“yupsectory.selet.com:9092”);
props.put(“client.id”,client\u id);
put(“key.serializer”、“org.apache.kafka.common.serialization.StringSerializer”);
put(“value.serializer”、“org.apache.kafka.common.serialization.StringSerializer”);
字符串jsonData=readFile(file.getAbsolutePath());
JSONObject jobj=新的JSONObject(jsonData);
System.out.println(“jarr:+jobj.getJSONObject(“data”).toString());
Yupsectoryproducer producer=新的Yupsectoryproducer(道具);
//使用此util从HttpServletRequest提取需要传播的上下文
Map headermap=YupsectoryContextUtil.buildContextMap(请求);
//发送消息
ProducerRecord=newproducerrecord(主题,jobj.getJSONObject(“数据”).toString());
制作人。发送(记录,标题映射);
producer.close();
}捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
}
手表服务可能会有所帮助。如果您想要更简单的方法,请使用Kafka Connect:@Top.Deck,我尝试了此链接中的示例代码,但在路径中覆盖同一文件时,它不会发出通知。我希望在同一路径中覆盖同一文件时收到文件更新通知。例如:我在路径中有一个名为a.JSON的文件。然后我更新了一个相同的文件(A.json),并在相同的路径中覆盖。我希望现在就可以检测到通知。@Stella这里可能是一个很好的例子: