我的拓扑结构中有一个喷口和一个螺栓。此拓扑在本地模式下正常工作。但是当向远程集群提交拓扑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;
}
答案 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
是您要安装它的文件夹。