当拓扑提交到远程集群时,不会调用spout的open()方法

时间:2013-11-25 13:25:35

标签: java redis apache-storm

我的拓扑结构中有一个喷口和一个螺栓。此拓扑在本地模式下正常工作。但是当向远程集群提交拓扑jar时,spout的open方法不会被调用。在open()方法中,我创建了一个哈希键,用于在redis数据库中存储数据,但是我无法在数据库中找到更新的数据。

示例代码是:

public void open(Map conf, TopologyContext context,
        SpoutOutputCollector collector) {

    // TODO Auto-generated method stub

    System.out.println("i am in open");
    Jedis js = new Jedis("127.0.0.1");
    js.hset("Spout1","FROMSPOUT1","i am in open");

    this.collector = collector;
}

1 个答案:

答案 0 :(得分:1)

根据您在评论中发布的内容,我可以假设您没有安装JZMQ

Error on initialization of server mk-worker java.lang.UnsatisfiedLinkError: no jzmq in java.library.path

尝试类似的内容:

 jzmq() {                                                                        
     JZMQ_DIR=$BASEDIR"/jzmq"                                                    
     JZMQ_REPO="https://github.com/zeromq/jzmq.git"                              
     JZMQ_COMMIT="e2dd66"                                                        


     git clone -q $JZMQ_REPO $JZMQ_DIR                                           


     echo                                                                        
     pushd $JZMQ_DIR                                                             
     git checkout $JZMQ_COMMIT                                                   
     ./autogen.sh                                                                
     ./configure --with-zeromq=/usr/local/lib                                    
     touch src/classdist_noinst.stamp                                            
     cd src                                                                      
     CLASSPATH=.:./.:$CLASSPATH javac -d . org/zeromq/ZMQ.java org/zeromq/ZMQException.java org/zeromq/ZMQQueue.java org/zeromq/ZMQForwarder.java org/zeromq/ZMQStreamer.java
     make && sudo make install                                                   
     popd                                                                        
     echo                                                                        
 } 

$BASEDIR是您要安装它的文件夹。