我们在12个时区有大约5亿司机。我们发送不同的通信,如他们的收入报告,新的促销活动,政策变化更新等,定期。我们希望在最适合他们的时间将这些通信发送给他们。例如-当地时间上午9点。我们'我希望尽早生成这些通信,并将其发布到Flink上,并安排在适当的时间进行交付。
消息将采用以下格式-{message_id, message, scheduled_time_in_utc}
为了简单起见,我们可以假设scheduled_time_in_utc的粒度始终为1小时,那么我们如何使用Flink来实现这个功能呢?
任何建议都很感激!谢谢!
1条答案
按热度按时间nom7f22z1#
我假设你可以用Kafka的语言推送这些通信,Flink将使用它作为源,并且你有一些异步I/O方法来发送通信(例如SMS服务)。
1.读取来自Kakfa的消息
1.关键字按
message_id
.process(new ReleaseTimedMessages())
1.使用Flink的AsyncIO support发送消息
其中
ReleaseTimedMessages
KeyedProcessFunction将保存状态中的msg,并设置一个进程时间计时器在目标传递时间触发。当它触发时,发出消息并清除计时器。