Hi Maciej, Thanks for the quick response. I wasn't aware of the idea of using a SinkWrapper, but I'm not quite certain that it would suit this specific use case (as a SinkFunction / RichSinkFunction doesn't appear to support side-outputs). Essentially, what I'd hope to accomplish would be to pick up when a bad record could not be written to the sink and then offload that via a side-output somewhere else.
Something like this, which is a very, very naive idea: class PostgresSinkWrapper<T>(private val sink: SinkFunction<T>): RichSinkFunction<T>() { private val logger = LoggerFactory.getLogger(PostgresSinkWrapper::class.java) override fun invoke(value: T, context: SinkFunction.Context) { try { sink.invoke(value, context) } catch (exception: Exception){ logger.error("Encountered a bad record, offloading to dead-letter-queue") // Offload bad record to DLQ } } } But I think that's basically the gist of it. I'm just not sure how I could go about doing this aside from perhaps writing a custom process function that wraps another sink function (or just completely rewriting my own JdbcSink?) Thanks, Rion On Wed, Jul 14, 2021 at 9:56 AM Maciej Bryński <mac...@brynski.pl> wrote: > Hi Rion, > We have implemented such a solution with Sink Wrapper. > > > Regards, > Maciek > > śr., 14 lip 2021 o 16:21 Rion Williams <rionmons...@gmail.com> napisał(a): > > > > Hi all, > > > > Recently I've been encountering an issue where some external > dependencies or process causes writes within my JDBCSink to fail (e.g. > something is being inserted with an explicit constraint that never made > it's way there). I'm trying to see if there's a pattern or recommendation > for handling this similar to a dead-letter queue. > > > > Basically - if I experience a given number of failures (> max retry > attempts) when writing to my JDBC destination, I'd like to take the record > that was attempted and throw it into a Kafka topic or some other > destination so that it can be evaluated at a later time. > > > > Are there any well defined patterns or recommended approaches around > this? > > > > Thanks, > > > > Rion > > > > -- > Maciek Bryński >