本篇文章为大家展示了Storm中对于Protocol进行的封装是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
对于Protocol的封装
package com.digitalpebble.storm.crawler.fetcher;
import com.digitalpebble.storm.crawler.util.Configuration;
public interface Protocol {
public ProtocolResponse getProtocolOutput(String url) throws Exception;
public void configure(Configuration conf);
}
对于ProtoclFactory的封装
package com.digitalpebble.storm.crawler.fetcher;
import java.net.URL;
import java.util.WeakHashMap;
import com.digitalpebble.storm.crawler.fetcher.asynchttpclient.AHProtocol;
import com.digitalpebble.storm.crawler.util.Configuration;
/**
* @author Yin Shuai
*
*/
public class ProtocolFactory {
private final Configuration config;
private final WeakHashMap<String, Protocol> cache = new WeakHashMap<String, Protocol>();
public ProtocolFactory(Configuration conf) {
config = conf;
}
/** Returns an instance of the protocol to use for a given URL **/
public synchronized Protocol getProtocol(URL url) {
// get the protocol
String protocol = url.getProtocol();
Protocol pp = cache.get(protocol);
if (pp != null)
return pp;
// yuk! hardcoded for now
pp = new AHProtocol();
pp.configure(config);
cache.put(protocol,pp);
return pp;
}
}
对于ProtocolResponse的封装
package com.digitalpebble.storm.crawler.fetcher;
import java.util.HashMap;
public class ProtocolResponse {
final byte[] content;
final int statusCode;
final HashMap<String, String[]> metadata;
public ProtocolResponse(byte[] c, int s, HashMap<String, String[]> md){
content = c;
statusCode = s;
metadata = md;
}
public byte[] getContent() {
return content;
}
public int getStatusCode() {
return statusCode;
}
public HashMap<String, String[]> getMetadata() {
return metadata;
}
}
上述内容就是Storm中对于Protocol进行的封装是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注天达云行业资讯频道。