Commits are handled by Streams internally and fully automatic, and thus there is usually no reason to commit manually. Note, that Streams handles this differently than consumer auto-commit — in fact, auto-commit is disabled for the internally used consumer and Streams manages commits “manually”. The reason is, that commits can only happen at certain points during processing to ensure no data can get lost (there a many internal dependencies with regard to updating state and flushing results).
For more frequent commits, you can reduce commit interval via
Nevertheless, manual commits are possible indirectly, via low-level Processor API. You can use the
context object that is provided via
init() method to call
context#commit(). Note, that this is only a “request to Streams” to commit as soon as possible — it’s not issuing a commit directly.
Leave an answer