mirror of
https://github.com/chrislusf/seaweedfs
synced 2024-08-14 13:51:03 +02:00
add example of watch files
This commit is contained in:
parent
0d5355c614
commit
3e362451d2
|
@ -275,9 +275,9 @@ public class FilerClient {
|
||||||
try {
|
try {
|
||||||
FilerProto.CreateEntryResponse createEntryResponse =
|
FilerProto.CreateEntryResponse createEntryResponse =
|
||||||
filerGrpcClient.getBlockingStub().createEntry(FilerProto.CreateEntryRequest.newBuilder()
|
filerGrpcClient.getBlockingStub().createEntry(FilerProto.CreateEntryRequest.newBuilder()
|
||||||
.setDirectory(parent)
|
.setDirectory(parent)
|
||||||
.setEntry(entry)
|
.setEntry(entry)
|
||||||
.build());
|
.build());
|
||||||
if (Strings.isNullOrEmpty(createEntryResponse.getError())) {
|
if (Strings.isNullOrEmpty(createEntryResponse.getError())) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -333,4 +333,13 @@ public class FilerClient {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Iterator<FilerProto.SubscribeMetadataResponse> watch(String prefix, String clientName, long sinceNs) {
|
||||||
|
return filerGrpcClient.getBlockingStub().subscribeMetadata(FilerProto.SubscribeMetadataRequest.newBuilder()
|
||||||
|
.setPathPrefix(prefix)
|
||||||
|
.setClientName(clientName)
|
||||||
|
.setSinceNs(sinceNs)
|
||||||
|
.build()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package com.example.test;
|
package com.seaweedfs.examples;
|
||||||
|
|
||||||
import seaweed.hdfs.SeaweedInputStream;
|
import seaweed.hdfs.SeaweedInputStream;
|
||||||
import seaweedfs.client.FilerClient;
|
import seaweedfs.client.FilerClient;
|
||||||
|
@ -10,22 +10,20 @@ import java.io.InputStream;
|
||||||
import java.util.zip.ZipEntry;
|
import java.util.zip.ZipEntry;
|
||||||
import java.util.zip.ZipInputStream;
|
import java.util.zip.ZipInputStream;
|
||||||
|
|
||||||
public class Example {
|
public class UnzipFile {
|
||||||
|
|
||||||
public static FilerClient filerClient = new FilerClient("localhost", 18888);
|
|
||||||
public static FilerGrpcClient filerGrpcClient = new FilerGrpcClient("localhost", 18888);
|
|
||||||
|
|
||||||
public static void main(String[] args) throws IOException {
|
public static void main(String[] args) throws IOException {
|
||||||
|
|
||||||
|
FilerGrpcClient filerGrpcClient = new FilerGrpcClient("localhost", 18888);
|
||||||
|
FilerClient filerClient = new FilerClient(filerGrpcClient);
|
||||||
|
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
// 本地模式,速度很快
|
|
||||||
parseZip("/Users/chris/tmp/test.zip");
|
parseZip("/Users/chris/tmp/test.zip");
|
||||||
|
|
||||||
long startTime2 = System.currentTimeMillis();
|
long startTime2 = System.currentTimeMillis();
|
||||||
|
|
||||||
long localProcessTime = startTime2 - startTime;
|
long localProcessTime = startTime2 - startTime;
|
||||||
|
|
||||||
// swfs读取,慢
|
|
||||||
SeaweedInputStream seaweedInputStream = new SeaweedInputStream(
|
SeaweedInputStream seaweedInputStream = new SeaweedInputStream(
|
||||||
filerGrpcClient,
|
filerGrpcClient,
|
||||||
new org.apache.hadoop.fs.FileSystem.Statistics(""),
|
new org.apache.hadoop.fs.FileSystem.Statistics(""),
|
|
@ -0,0 +1,42 @@
|
||||||
|
package com.seaweedfs.examples;
|
||||||
|
|
||||||
|
import seaweedfs.client.FilerClient;
|
||||||
|
import seaweedfs.client.FilerGrpcClient;
|
||||||
|
import seaweedfs.client.FilerProto;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
public class WatchFiles {
|
||||||
|
|
||||||
|
public static void main(String[] args) throws IOException {
|
||||||
|
FilerGrpcClient filerGrpcClient = new FilerGrpcClient("localhost", 18888);
|
||||||
|
FilerClient filerClient = new FilerClient(filerGrpcClient);
|
||||||
|
|
||||||
|
Iterator<FilerProto.SubscribeMetadataResponse> watch = filerClient.watch(
|
||||||
|
"/buckets",
|
||||||
|
"exampleClient",
|
||||||
|
System.currentTimeMillis() * 1000000L
|
||||||
|
);
|
||||||
|
|
||||||
|
while (watch.hasNext()) {
|
||||||
|
FilerProto.SubscribeMetadataResponse event = watch.next();
|
||||||
|
FilerProto.EventNotification notification = event.getEventNotification();
|
||||||
|
if (notification.getNewParentPath() != null) {
|
||||||
|
// move an entry to a new directory, possibly with a new name
|
||||||
|
if (notification.hasOldEntry() && notification.hasNewEntry()) {
|
||||||
|
System.out.println("move " + event.getDirectory() + "/" + notification.getOldEntry().getName() + " to " + notification.getNewParentPath() + "/" + notification.getNewEntry().getName());
|
||||||
|
} else {
|
||||||
|
System.out.println("this should not happen.");
|
||||||
|
}
|
||||||
|
} else if (notification.hasNewEntry() && !notification.hasOldEntry()) {
|
||||||
|
System.out.println("create entry " + event.getDirectory() + "/" + notification.getNewEntry().getName());
|
||||||
|
} else if (!notification.hasNewEntry() && notification.hasOldEntry()) {
|
||||||
|
System.out.println("delete entry " + event.getDirectory() + "/" + notification.getOldEntry().getName());
|
||||||
|
} else if (notification.hasNewEntry() && notification.hasOldEntry()) {
|
||||||
|
System.out.println("updated entry " + event.getDirectory() + "/" + notification.getNewEntry().getName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue