@Override public void consume(ChannelMessage<ClientMessage, T> queued) { Optional<CountedSchedule> current = getScheduleCount(queued.metadata().get()).map(count -> new CountedSchedule(now(), count)); consumer.consume(message(current, queued.data())); }
@Override public void send(ChannelMessage<CountedSchedule, T> msg) throws Exception { requireNonNull(msg, "msg"); CountedSchedule metadata = msg.metadata().orElse(CountedSchedule.first()); channel.send( message( durableMessage() .andThen(setScheduledDeliveryTime(metadata.when())) .andThen(setScheduleCount(metadata.count())), msg.data())); }