@Override public void sendOffsetsToTransaction(Map<TopicPartition, OffsetAndMetadata> offsets, String consumerGroupId) { delegate.sendOffsetsToTransaction(offsets, consumerGroupId); } }
@Override public void sendOffsetsToTransaction(Map<TopicPartition, OffsetAndMetadata> offsets, String consumerGroupId) throws ProducerFencedException { this.delegate.sendOffsetsToTransaction(offsets, consumerGroupId); }
@Override public void sendOffsetsToTransaction(Map<TopicPartition, OffsetAndMetadata> offsets, String consumerGroupId) { @SuppressWarnings("unchecked") KafkaResourceHolder<K, V> resourceHolder = (KafkaResourceHolder<K, V>) TransactionSynchronizationManager .getResource(this.producerFactory); Assert.isTrue(resourceHolder != null, "No transaction in process"); if (resourceHolder.getProducer() != null) { resourceHolder.getProducer().sendOffsetsToTransaction(offsets, consumerGroupId); } }
Map<TopicPartition, OffsetAndMetadata> offsets = new LinkedHashMap<>(); offsets.put(new TopicPartition("foo", 0), new OffsetAndMetadata(1L)); inOrder.verify(this.producer).sendOffsetsToTransaction(offsets, CONTAINER_ID); inOrder.verify(this.producer).commitTransaction(); offsets.clear(); offsets.put(new TopicPartition("foo", 0), new OffsetAndMetadata(2L)); inOrder.verify(this.producer).sendOffsetsToTransaction(offsets, CONTAINER_ID); inOrder.verify(this.producer).commitTransaction(); offsets.clear(); offsets.put(new TopicPartition("foo", 1), new OffsetAndMetadata(1L)); inOrder.verify(this.producer).sendOffsetsToTransaction(offsets, CONTAINER_ID); inOrder.verify(this.producer).commitTransaction(); inOrder.verify(this.consumer).seek(new TopicPartition("foo", 1), 1L); offsets.clear(); offsets.put(new TopicPartition("foo", 1), new OffsetAndMetadata(2L)); inOrder.verify(this.producer).sendOffsetsToTransaction(offsets, CONTAINER_ID); inOrder.verify(this.producer).commitTransaction(); offsets.clear(); offsets.put(new TopicPartition("foo", 2), new OffsetAndMetadata(1L)); inOrder.verify(this.producer).sendOffsetsToTransaction(offsets, CONTAINER_ID); inOrder.verify(this.producer).commitTransaction(); offsets.clear(); offsets.put(new TopicPartition("foo", 2), new OffsetAndMetadata(2L)); inOrder.verify(this.producer).sendOffsetsToTransaction(offsets, CONTAINER_ID); inOrder.verify(this.producer).commitTransaction(); inOrder.verify(this.consumer).poll(Duration.ofMillis(ContainerProperties.DEFAULT_POLL_TIMEOUT));
@SuppressWarnings("unchecked") @Test public void discardRemainingRecordsFromPollAndSeek() throws Exception { assertThat(this.config.deliveryLatch.await(10, TimeUnit.SECONDS)).isTrue(); assertThat(this.config.pollLatch.await(10, TimeUnit.SECONDS)).isTrue(); this.registry.stop(); assertThat(this.config.closeLatch.await(10, TimeUnit.SECONDS)).isTrue(); InOrder inOrder = inOrder(this.consumer, this.producer); inOrder.verify(this.consumer).subscribe(any(Collection.class), any(ConsumerRebalanceListener.class)); inOrder.verify(this.consumer).poll(Duration.ofMillis(ContainerProperties.DEFAULT_POLL_TIMEOUT)); inOrder.verify(this.producer).beginTransaction(); inOrder.verify(this.consumer).seek(new TopicPartition("foo", 0), 0L); inOrder.verify(this.consumer).seek(new TopicPartition("foo", 1), 0L); inOrder.verify(this.consumer).seek(new TopicPartition("foo", 2), 0L); inOrder.verify(this.producer).abortTransaction(); inOrder.verify(this.consumer).poll(Duration.ofMillis(ContainerProperties.DEFAULT_POLL_TIMEOUT)); inOrder.verify(this.producer).beginTransaction(); Map<TopicPartition, OffsetAndMetadata> offsets = new LinkedHashMap<>(); offsets.put(new TopicPartition("foo", 0), new OffsetAndMetadata(2L)); offsets.put(new TopicPartition("foo", 1), new OffsetAndMetadata(2L)); offsets.put(new TopicPartition("foo", 2), new OffsetAndMetadata(2L)); inOrder.verify(this.producer).sendOffsetsToTransaction(offsets, CONTAINER_ID); inOrder.verify(this.producer).commitTransaction(); assertThat(this.config.ehException).isInstanceOf(ListenerExecutionFailedException.class); assertThat(((ListenerExecutionFailedException) this.config.ehException).getGroupId()).isEqualTo(CONTAINER_ID); }
Map<TopicPartition, OffsetAndMetadata> offsets = new LinkedHashMap<>(); offsets.put(new TopicPartition("foo", 0), new OffsetAndMetadata(1L)); inOrder.verify(this.producer).sendOffsetsToTransaction(offsets, CONTAINER_ID); inOrder.verify(this.producer).commitTransaction(); offsets.clear(); offsets.put(new TopicPartition("foo", 0), new OffsetAndMetadata(2L)); inOrder.verify(this.producer).sendOffsetsToTransaction(offsets, CONTAINER_ID); inOrder.verify(this.producer).commitTransaction(); offsets.clear(); offsets.put(new TopicPartition("foo", 1), new OffsetAndMetadata(1L)); inOrder.verify(this.producer).sendOffsetsToTransaction(offsets, CONTAINER_ID); inOrder.verify(this.producer).commitTransaction(); inOrder.verify(this.consumer).seek(new TopicPartition("foo", 1), 1L); offsets.clear(); offsets.put(new TopicPartition("foo", 1), new OffsetAndMetadata(2L)); inOrder.verify(this.producer).sendOffsetsToTransaction(offsets, CONTAINER_ID); inOrder.verify(this.producer).commitTransaction(); offsets.clear(); offsets.put(new TopicPartition("foo", 2), new OffsetAndMetadata(1L)); inOrder.verify(this.producer).sendOffsetsToTransaction(offsets, CONTAINER_ID); inOrder.verify(this.producer).commitTransaction(); offsets.clear(); offsets.put(new TopicPartition("foo", 2), new OffsetAndMetadata(2L)); inOrder.verify(this.producer).sendOffsetsToTransaction(offsets, CONTAINER_ID); inOrder.verify(this.producer).commitTransaction(); inOrder.verify(this.consumer).poll(Duration.ofMillis(ContainerProperties.DEFAULT_POLL_TIMEOUT));
@Override public void sendOffsetsToTransaction(Map<TopicPartition, OffsetAndMetadata> offsets, String consumerGroupId) throws ProducerFencedException { this.delegate.sendOffsetsToTransaction(offsets, consumerGroupId); }
@Override public void sendOffsetsToTransaction(Map<TopicPartition, OffsetAndMetadata> offsets, String consumerGroupId) throws ProducerFencedException { _producer.sendOffsetsToTransaction(offsets, consumerGroupId); }
@Override public void sendOffsetsToTransaction(Map<TopicPartition, OffsetAndMetadata> map, String s) throws ProducerFencedException { producer.sendOffsetsToTransaction(map, s); }
@Override public void sendOffsetsToTransaction(Map<TopicPartition, OffsetAndMetadata> offsets, String consumerGroupId) { delegate.sendOffsetsToTransaction(offsets, consumerGroupId); } }
@Override public void sendOffsetsToTransaction(Map<TopicPartition, OffsetAndMetadata> offsets, String consumerGroupId) throws ProducerFencedException { producer.sendOffsetsToTransaction(offsets, consumerGroupId); }
@Override public void sendOffsetsToTransaction(Map<TopicPartition, OffsetAndMetadata> offsets, String consumerGroupId) throws ProducerFencedException { this.delegate.sendOffsetsToTransaction(offsets, consumerGroupId); }
@Override public void sendOffsetsToTransaction(Map<TopicPartition, OffsetAndMetadata> map, String s) throws ProducerFencedException { producer.sendOffsetsToTransaction(map, s); }
verify(producer).send(captor.capture(), any(Callback.class)); assertThat(captor.getValue()).isEqualTo(new ProducerRecord("bar", "baz")); inOrder.verify(producer, never()).sendOffsetsToTransaction(anyMap(), anyString()); inOrder.verify(producer, never()).commitTransaction(); inOrder.verify(producer).abortTransaction();
InOrder inOrder = inOrder(producer); inOrder.verify(producer).beginTransaction(); inOrder.verify(producer).sendOffsetsToTransaction(Collections.singletonMap(topicPartition, new OffsetAndMetadata(0)), "group"); inOrder.verify(producer).commitTransaction(); inOrder.verify(producer).send(captor.capture(), any(Callback.class)); assertThat(captor.getValue()).isEqualTo(new ProducerRecord("bar", "baz")); inOrder.verify(producer).sendOffsetsToTransaction(Collections.singletonMap(topicPartition, new OffsetAndMetadata(1)), "group"); inOrder.verify(producer).commitTransaction();
verify(producer).send(captor.capture(), any(Callback.class)); assertThat(captor.getValue()).isEqualTo(new ProducerRecord("bar", "baz")); inOrder.verify(producer, never()).sendOffsetsToTransaction(anyMap(), anyString()); inOrder.verify(producer, never()).commitTransaction(); inOrder.verify(producer).abortTransaction();
inOrder.verify(producer).send(captor.capture(), any(Callback.class)); assertThat(captor.getValue()).isEqualTo(new ProducerRecord("bar", "baz")); inOrder.verify(producer).sendOffsetsToTransaction(Collections.singletonMap(topicPartition, new OffsetAndMetadata(1)), "group"); inOrder.verify(producer).commitTransaction();
producer.sendOffsetsToTransaction(consumedOffsetsAndMetadata, applicationId); producer.commitTransaction(); transactionInFlight = false;