Storm中对于Protocol进行的封装是怎样的

73次阅读
没有评论

共计 1744 个字符,预计需要花费 5 分钟才能阅读完成。

本篇文章为大家展示了 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 进行的封装是怎样的,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-25发表,共计1744字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)