public static final String ISOLATION_LEVEL_CONFIG = "isolation.level";
public static final String ISOLATION_LEVEL_DOC = "<p>Controls how to read messages written transactionally. If set to <code>read_committed</code>, consumer.poll() will only return" +
" transactional messages which have been committed. If set to <code>read_uncommitted</code>' (the default), consumer.poll() will return all messages, even transactional messages" +
" which have been aborted. Non-transactional messages will be returned unconditionally in either mode.</p> <p>Messages will always be returned in offset order. Hence, in " +
" <code>read_committed</code> mode, consumer.poll() will only return messages up to the last stable offset (LSO), which is the one less than the offset of the first open transaction." +
" In particular any messages appearing after messages belonging to ongoing transactions will be withheld until the relevant transaction has been completed. As a result, <code>read_committed</code>" +
" consumers will not be able to read up to the high watermark when there are in flight transactions.</p><p> Further, when in <code>read_committed</code> the seekToEnd method will" +
" return the LSO";
We're using transactions. When transactions are set it should either automatically be set to read_committed and/or allow the user to overwrite this setting in application.properties.
I’ve just noticed:
if (transactionIdPrefix == null) {
throw new IllegalStateException("transactionalIdPrefix cannot be empty");
}
We choose to use transactions but it looks like that's not really a choice and therefore Axon should probably bias to a different isolation level.
I apologize jumped the gun. That conditional was defined inside @ConditionalOnProperty(“axon.kafka.producer.transaction-id-prefix”)