首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Spout中读取Kestrel服务器队列的Java客户端库

从Spout中读取Kestrel服务器队列的Java客户端库
EN

Stack Overflow用户
提问于 2014-02-05 14:42:46
回答 1查看 1.1K关注 0票数 0

我已经安装了一个Kestrel服务器,并且能够通过python 吡啶雌二醇库来设置和使用队列。

我们有这样一个场景: python客户端写到Kestrel队列,spout需要从队列中读取。我试过使用风暴-红隼图书馆,但遇到了一些问题。谷歌似乎暗示它不支持memcache端口(22133)。

我按照提供的这里添加了maven绑定。没有使用KestrelThriftSpout喷口,使用Kestrel.Client。编译是可以的,但是我在运行时得到了java.lang.NoClassDefFoundError错误。

堆栈跟踪

代码语言:javascript
复制
1098 [main] ERROR org.apache.zookeeper.server.NIOServerCnxn  - Thread Thread[main,5,main] died
java.lang.NoClassDefFoundError: Lnet/lag/kestrel/thrift/Kestrel$Client;
    at java.lang.Class.getDeclaredFields0(Native Method)
    at java.lang.Class.privateGetDeclaredFields(Class.java:2397)
    at java.lang.Class.getDeclaredField(Class.java:1946)
    at java.io.ObjectStreamClass.getDeclaredSUID(ObjectStreamClass.java:1659)
    at java.io.ObjectStreamClass.access$700(ObjectStreamClass.java:72)
    at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:480)
    at java.io.ObjectStreamClass$2.run(ObjectStreamClass.java:468)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.io.ObjectStreamClass.<init>(ObjectStreamClass.java:468)
    at java.io.ObjectStreamClass.lookup(ObjectStreamClass.java:365)
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1133)
    at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
    at backtype.storm.utils.Utils.serialize(Utils.java:52)
    at backtype.storm.topology.TopologyBuilder.createTopology(TopologyBuilder.java:94)
    at com.rr.storm.ArticleTolopolgy.main(ArticleTolopolgy.java:35)
Caused by: java.lang.ClassNotFoundException: net.lag.kestrel.thrift.Kestrel$Client
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
    ... 15 more

请有人确认在这种情况下是否可以或不能使用风暴-红隼吗?

如果没有,是否有另一个kestrel客户端库建议从风暴喷口中用于读取kestrel队列中的数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-07 04:34:01

抱歉更新得太晚了。

  • java.lang.NoClassDefFoundError是因为一些罐子不在类路径中。其中涉及几个依赖项,因此我们将所有依赖项打包到一个JAR中,从而解决了这个问题。有几个依赖冲突需要解决,特别是需要解决。其中包含AWS、SQS和storm,具体取决于不同的httpclient库。需要将AWS版本降级为1.4.7,而不是发布时的最新版本1.7.2。
  • 看起来风暴-红隼库不再适用于kestrel服务器,但是如果理解错误,其他人可以纠正。
  • 为Python使用了吡啶雌二醇,它工作得很好。
  • 使用简单的客户端为Java客户端(Storm ),它工作得很好
  • 由于冲突,使用Java v1.4.7进行AWS,它工作得很好。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21580323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档