Thank a lot ! That's what I thought, out of the box ... but it's clearly
logic
I will take your solution in the consumer, but I will refactor my Java code
part, because, it's a spring message listener with annotation. So, I
think, I couldn't do it simply with spring.

thank again,

best regards
Adrian

Le mer. 22 mai 2019 à 23:23, Jonathan Santilli <jonathansanti...@gmail.com>
a écrit :

> Maybe you could:
>
> 1.- Disable auto.commit on the consumer side.
> 2.- Consume messages, one by one in each poll.
> 3.- Check the record timestamp
>     a.- If the timestamp is >= desired window (time slot), process it and
> commit offset
>     b.- If the timestamp is < desired window (time slot), do not process it
> and do not commit offset, in the next poll the consumer will get the
> message again.
>
> Hope that helps,
> --
> Jonathan
>
>
>
>
> On Wed, May 22, 2019 at 9:25 PM Peter Bukowinski <pmb...@gmail.com> wrote:
>
> > I’d suggest using separate topics for messages that require delay and
> ones
> > that do not. If you are limited to a single topic, then I’d use some
> other
> > metadata to differentiate messages that require delayed processing from
> > ones that do not. If you do not want to block the polling thread, you’ll
> > need to route messages into a buffer of some sort to process them
> > asynchronously.
> >
> > —
> > Peter
> >
> > > On May 22, 2019, at 1:10 PM, Pavel Molchanov <
> > pavel.molcha...@infodesk.com> wrote:
> > >
> > > This solution will block receiving polling thread for 15 minutes. Not
> > good.
> > >
> > > What should we do if a topic has messages that should be processed
> > > immediately and delayed messages at the same time?
> > >
> > > *Pavel Molchanov*
> > >
> > >
> > >
> > > On Wed, May 22, 2019 at 2:41 PM Peter Bukowinski <pmb...@gmail.com>
> > wrote:
> > >
> > >> There is no out-of-the-box way to tell a consumer to not consume an
> > offset
> > >> until it is x minutes old. Your best bet is encode the creation time
> > into
> > >> the message themselves and add some processing logic into your
> consumer.
> > >> Let’s assume your topic has a single partition or your partitions are
> > keyed
> > >> to guarantee message order. Your consumer could work like this in
> > >> pseudo-code:
> > >>
> > >> consumer loop:
> > >>        consume message
> > >>        if (current time - message.timestamp) >= 15 minutes
> > >>                process message
> > >>        else
> > >>                sleep 15 minutes - (current time - message.timestamp)
> > >>                process message
> > >>
> > >> Since the messages enter the topic in the order they were published,
> > >> pausing on the current offset should never cause a bottleneck on the
> > later
> > >> messages. If you fall behind, the greater than or equal to logic will
> > >> prevent your consumer from pausing until it has caught up to your
> > desired
> > >> delay.
> > >>
> > >> This is a simplified scenario that may or may not map to your
> production
> > >> use case, though.
> > >>
> > >> —
> > >> Peter
> > >>
> > >>
> > >>> On May 22, 2019, at 11:12 AM, Pavel Molchanov <
> > >> pavel.molcha...@infodesk.com> wrote:
> > >>>
> > >>> Andrien,
> > >>>
> > >>> Thank you for asking this question! I have the same problem and
> wanted
> > to
> > >>> ask the same question. I hope that someone will answer soon.
> > >>>
> > >>> *Pavel Molchanov*
> > >>>
> > >>>
> > >>>
> > >>> On Wed, May 22, 2019 at 9:54 AM Adrien Ruffie <adrye...@gmail.com>
> > >> wrote:
> > >>>
> > >>>> Hello all,
> > >>>>
> > >>>> I have a specific need and I don't know if a generic solution exist
> > ...
> > >>>> maybe you can enlighten me
> > >>>>
> > >>>> I need to delay each sended message about 15 mins.
> > >>>> Example
> > >>>> Message with offset 1 created at 2:41PM by the producer and received
> > by
> > >> the
> > >>>> consumer at 2:56PM
> > >>>> Message with offset 2 created at 2:46PM by the producer and received
> > by
> > >> the
> > >>>> consumer at 3:01PM
> > >>>> Message with offset 3 created at 2:46PM by the producer and received
> > by
> > >> the
> > >>>> consumer at 3:01PM
> > >>>> Message with offset 4 created at 3:01PM by the producer and received
> > by
> > >> the
> > >>>> consumer at 3:16PM
> > >>>> and so forth ...
> > >>>>
> > >>>> any option, mechanism, producer/consumer implementations already
> > exist ?
> > >>>>
> > >>>> Thank a lot and best regards
> > >>>>
> > >>>> Adrian
> > >>>>
> > >>
> > >>
> >
> >
>
> --
> Santilli Jonathan
>

Reply via email to