微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从RabbitMQ对N条消息进行重复数据删除,但时间相同,但冲突操作不同

如何解决从RabbitMQ对N条消息进行重复数据删除,但时间相同,但冲突操作不同

我有一个RabbitMQ队列,该队列接收买卖订单;但是,我们同时获得多个订单...

消息1

{
    "time": "2020-08-12T16:53:04Z","order": "buy","order_contract": 5,"ticker": "6E1!","price": 1.1806,"market_position": "long","position_size": 15
}

消息2

{
    "time": "2020-08-12T16:53:04Z","order": "sell","price": 1.1804000000000001,"market_position": "short","position_size": -10
}

消息3

{
    "time": "2020-08-12T16:53:04Z","order_contract": 20,"price": 1.1805,"position_size": -5
}

我们需要处理队列中的所有消息,但是只发送一个要在此时隙执行的消息。这意味着我们需要删除重复数据并获取最终消息。我们很可能一次只能收到15条消息。

在这种情况下,应在重复数据删除后执行的消息是

{
    "time": "2020-08-12T16:53:04Z","position_size": -10
}

为什么?我们有2个(两个)订单说“卖出”,该方向的最大头寸为-10。

试图找出最能处理队列中消息的算法,然后仅在重复数据删除后执行消息。因为我不知道是否会再有消息到达;我需要在1秒钟后执行“中奖”消息。

解决方法

我发现以下pattern解决了我的解决方案。按照他们的模式,他们使用Kafka和RockDB解决重复数据删除以及许多其他好处。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。