首页 > 解决方案 > 来自 Redis 的 Siddhi 查询

问题描述

似乎我对来自 redis 的 Siddhi 查询有疑问。下面的代码不打印任何输出流。我在 redis 名称中键入 fo1

       "@store(type='redis', host='x.x.x.x', port='6379', table.name='RedisTable')" +
        "@PrimaryKey('key')" +
        "define table RedisTable(key string, value string); " +

        "define stream FooStream (name string); " +
        "define stream OutputStream(name string); " +
        "from FooStream  " +
        "[( RedisTable.key == name ) in RedisTable] " +
        "insert into OutputStream; ";

        SiddhiAppRuntime siddhiAppRuntime = siddhiManager.createSiddhiAppRuntime(streams );

        //Adding callback to retrieve output events from stream
        siddhiAppRuntime.addCallback("OutputStream", new StreamCallback() {
            @Override
            public void receive(Event[] events) {
                EventPrinter.print(events);
                //To convert and print event as a map
                //EventPrinter.print(toMap(events));
            }
        });

        InputHandler inputHandler = siddhiAppRuntime.getInputHandler("FooStream");
        inputHandler.send(new Object[]{"fo1"});

雷迪斯: 在此处输入图像描述

我期待并为 OutputStream 输出“fo1”,但不知何故它没有打印任何东西。

标签: siddhi

解决方案


我不确定这是否对您有帮助,但我对 redis 的配置是:

@Store(type="redis", table.name="tablename", cluster.mode="false", nodes="redisIP:6379")
 @primaryKey('key')
define table tablename (foo string)

我正在使用 wso2sp,但也许这对你有帮助。


推荐阅读