org.springframework.cloud.stream.binder.PartitionTestSupport Java Examples
The following examples show how to use
org.springframework.cloud.stream.binder.PartitionTestSupport.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: KinesisTestBinder.java From spring-cloud-stream-binder-aws-kinesis with Apache License 2.0 | 4 votes |
@Bean public PartitionTestSupport partitionSupport() { return new PartitionTestSupport(); }
Example #2
Source File: KafkaBinderTests.java From spring-cloud-stream-binder-kafka with Apache License 2.0 | 4 votes |
@Test @Override @SuppressWarnings({ "unchecked", "rawtypes" }) public void testPartitionedModuleJava() throws Exception { Binder binder = getBinder(); KafkaBinderConfigurationProperties configurationProperties = createConfigurationProperties(); ExtendedConsumerProperties<KafkaConsumerProperties> consumerProperties = createConsumerProperties(); consumerProperties.setConcurrency(2); consumerProperties.setInstanceCount(4); consumerProperties.setInstanceIndex(0); consumerProperties.setPartitioned(true); consumerProperties.getExtension().setAutoRebalanceEnabled(false); QueueChannel input0 = new QueueChannel(); input0.setBeanName("test.input0J"); Binding<MessageChannel> input0Binding = binder.bindConsumer("partJ.0", "test", input0, consumerProperties); consumerProperties.setInstanceIndex(1); QueueChannel input1 = new QueueChannel(); input1.setBeanName("test.input1J"); Binding<MessageChannel> input1Binding = binder.bindConsumer("partJ.0", "test", input1, consumerProperties); consumerProperties.setInstanceIndex(2); QueueChannel input2 = new QueueChannel(); input2.setBeanName("test.input2J"); Binding<MessageChannel> input2Binding = binder.bindConsumer("partJ.0", "test", input2, consumerProperties); consumerProperties.setInstanceIndex(3); QueueChannel input3 = new QueueChannel(); input3.setBeanName("test.input3J"); Binding<MessageChannel> input3Binding = binder.bindConsumer("partJ.0", "test", input3, consumerProperties); ExtendedProducerProperties<KafkaProducerProperties> producerProperties = createProducerProperties(); this.applicationContext.registerBean("pkExtractor", PartitionTestSupport.class, () -> new PartitionTestSupport()); this.applicationContext.registerBean("pkSelector", PartitionTestSupport.class, () -> new PartitionTestSupport()); producerProperties.setPartitionKeyExtractorName("pkExtractor"); producerProperties.setPartitionSelectorName("pkSelector"); producerProperties.setPartitionCount(3); // overridden to 8 on the actual topic DirectChannel output = createBindableChannel("output", createProducerBindingProperties(producerProperties)); output.setBeanName("test.output"); Binding<MessageChannel> outputBinding = binder.bindProducer("partJ.0", output, producerProperties); if (usesExplicitRouting()) { Object endpoint = extractEndpoint(outputBinding); assertThat(getEndpointRouting(endpoint)) .contains(getExpectedRoutingBaseDestination("partJ.0", "test") + "-' + headers['partition']"); } output.send(new GenericMessage<>(2)); output.send(new GenericMessage<>(1)); output.send(new GenericMessage<>(0)); output.send(new GenericMessage<>(3)); Message<?> receive0 = receive(input0); assertThat(receive0).isNotNull(); Message<?> receive1 = receive(input1); assertThat(receive1).isNotNull(); Message<?> receive2 = receive(input2); assertThat(receive2).isNotNull(); Message<?> receive3 = receive(input3); assertThat(receive3).isNotNull(); ObjectMapper om = new ObjectMapper(); assertThat(om.readValue((byte[]) receive0.getPayload(), Integer.class)) .isEqualTo(0); assertThat(om.readValue((byte[]) receive1.getPayload(), Integer.class)) .isEqualTo(1); assertThat(om.readValue((byte[]) receive2.getPayload(), Integer.class)) .isEqualTo(2); assertThat(om.readValue((byte[]) receive3.getPayload(), Integer.class)) .isEqualTo(3); input0Binding.unbind(); input1Binding.unbind(); input2Binding.unbind(); input3Binding.unbind(); outputBinding.unbind(); }