共計(jì) 1744 個(gè)字符,預(yù)計(jì)需要花費(fèi) 5 分鐘才能閱讀完成。
本篇文章為大家展示了 Storm 中對(duì)于 Protocol 進(jìn)行的封裝是怎樣的,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
對(duì)于 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);
}
對(duì)于 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;
}
}
對(duì)于 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;
}
}
上述內(nèi)容就是 Storm 中對(duì)于 Protocol 進(jìn)行的封裝是怎樣的,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。
正文完
發(fā)表至: 計(jì)算機(jī)運(yùn)維
2023-08-25