[
https://issues.apache.org/jira/browse/BEAM-6857?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Shehzaad Nakhoda reassigned BEAM-6857:
--------------------------------------
Assignee: Shehzaad Nakhoda
> Support dynamic timers
> ----------------------
>
> Key: BEAM-6857
> URL: https://issues.apache.org/jira/browse/BEAM-6857
> Project: Beam
> Issue Type: Bug
> Components: sdk-java-core
> Reporter: Reuven Lax
> Assignee: Shehzaad Nakhoda
> Priority: Major
>
> The Beam timers API currently requires each timer to be statically specified
> in the DoFn. The user must provide a separate callback method per timer. For
> example:
> DoFn<String, String>() {
> @TimerId("timer1") private final TimerSpec timer1 = TimerSpecs.timer(...);
> @TimerId("timer2") private final TimerSpec timer2 = TimerSpecs.timer(...);
> ...... set timers in processElement
> @OnTimer("timer1") public void onTimer1() \{ .....}
> @OnTimer("timer2") public void onTimer2() \{....}
> }
> However there are many cases where the user does not know the set of timers
> statically when writing their code. This happens when the timer tag should be
> based on the data. It also happens when writing a DSL on top of Beam, where
> the DSL author has to create DoFns but does not know statically which timers
> their users will want to set (e.g. Scio).
>
> The goal is to support dynamic timers. Something as follows;
> DoFn<String, String>() {
> @TimerId("timer") private final TimerSpec timer1 =
> TimerSpecs.dynamicTimer(...);
> @ProcessElement process(@TimerId("timer") DynamicTimer timer) {
> timer.set("tag1'", ts);
> timer.set("tag2", ts);
> }
> @OnTimer("timer") public void onTimer1(@TimerTag String tag) \{ .....}
> }
--
This message was sent by Atlassian JIRA
(v7.6.14#76016)