本篇文章為大家展示了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進行的封裝是怎樣的,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。