Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Redis/莴苣/Stream-如何在xadd中发送我自己的条目id_Java_Redis_Lettuce - Fatal编程技术网

Java Redis/莴苣/Stream-如何在xadd中发送我自己的条目id

Java Redis/莴苣/Stream-如何在xadd中发送我自己的条目id,java,redis,lettuce,Java,Redis,Lettuce,我正在实现一个价格提要,Java作为提要,python作为消费者。我更喜欢python而不是Java。我需要从java发送我自己的条目id(时间戳),但是我没有找到关于如何做的示例和清晰的文档(我是一个入门级java) 这是正在工作的java代码,但是发送默认的Redis条目id,相当于发送:XADD stream_id*key_1 value_1 key_2 value_2 public void onTick(Instrument instrument, ITick tick) throws

我正在实现一个价格提要,Java作为提要,python作为消费者。我更喜欢python而不是Java。我需要从java发送我自己的条目id(时间戳),但是我没有找到关于如何做的示例和清晰的文档(我是一个入门级java)

这是正在工作的java代码,但是发送默认的Redis条目id,相当于发送:XADD stream_id*key_1 value_1 key_2 value_2

public void onTick(Instrument instrument, ITick tick) throws JFException {

        String _streamName = instrument.name() + ":tick";
        long _tickDate = tick.getTime();
        String _sTickDate = Long.toString(_tickDate);

        double _ask = tick.getAsk();
        double _bid = tick.getBid();

        Map<String, String> _messageBody = new HashMap<>();
        _messageBody.put( "ask", Double.toString(_ask) );
        _messageBody.put( "bid", Double.toString(_bid) );

        console.getOut().println("Sending to " + _streamName + " -> " + tick);

        this.sync.xadd(_streamName, _messageBody);    
    }

它以id=命名的prameter发送

我将非常感谢任何帮助


谢谢

在呼吸了一些新鲜空气后,根据这里找到的XADDARG的描述找到了答案

导入io.莴苣.core.RedisClient;
导入io.莴苣.core.api.StatefulRedisConnection;
导入io.莴苣.core.api.sync.redis命令;
导入io.莴苣.core.XAddArgs;
.
.
.
公共静态XAddArgs id(长tsId){
返回新的XAddArgs().id(Long.toString(tsId));
}
@凌驾
公共void onTick(Instrument,ITick tick)抛出JFEException{
字符串_streamName=instrument.name()+“:勾选”;
long _tickDate=tick.getTime();
字符串_sTickDate=Long.toString(_tickDate);
double_ask=勾选.getAsk();
double_bid=tick.getBid();
Map _messageBody=newhashmap();
_messageBody.put(“ask”,Double.toString(_ask));
_messageBody.put(“bid”,Double.toString(_bid));
_messageBody.put(“时间”,_sTickDate);
console.getOut();
this.sync.xadd(_streamName,id(_tickDate),_messageBody);
}
def send_tick(self, instrument, bar_size, tick):
        _stream_id = f"{instrument}:{bar_size}"
        self.client.xadd(_stream_id, {"bid": tick[self.BID_KEY], "ask": tick[self.ASK_KEY]}, id=tick[self.TS_KEY])
import io.lettuce.core.RedisClient;
import io.lettuce.core.api.StatefulRedisConnection;
import io.lettuce.core.api.sync.RedisCommands;
import io.lettuce.core.XAddArgs;

.
.
.
    public static XAddArgs id(long tsId) {
        return new XAddArgs().id(Long.toString(tsId));
    }

    @Override
    public void onTick(Instrument instrument, ITick tick) throws JFException {

        String _streamName = instrument.name() + ":tick";
        long _tickDate = tick.getTime();
        String _sTickDate = Long.toString(_tickDate);

        double _ask = tick.getAsk();
        double _bid = tick.getBid();

        Map<String, String> _messageBody = new HashMap<>();
        _messageBody.put( "ask", Double.toString(_ask) );
        _messageBody.put( "bid", Double.toString(_bid) );
        _messageBody.put( "time", _sTickDate );

        console.getOut().println("Sending to " + _streamName + " -> " + tick);

        this.sync.xadd(_streamName, id(_tickDate),  _messageBody);    
    }