Я создал QueueChannel
с capacity=500
и отправил туда 1000 сообщений. Не все из них напечатаны; номер последнего 567. Почему это так?
Вот код:
@SpringBootApplication
@IntegrationComponentScan
public class QueueChannelResearch {
@Bean
public IntegrationFlow lambdaFlow() {
return f -> f.channel(c -> c.queue(500))
.handle(System.out::println);
}
public static void main(String[] args) {
ConfigurableApplicationContext ctx = SpringApplication.run(QueueChannelResearch.class, args);
MessageChannel inputChannel = ctx.getBean("lambdaFlow.input", MessageChannel.class);
for (int i = 0; i < 1000; i++) {
inputChannel.send(MessageBuilder.withPayload("w" + i)
.build());
}
ctx.close();
}
}
Вот вывод:
GenericMessage [payload=w1, headers={id=d97946f2-1cf6-d681-fa88-08a4e708e61e, timestamp=1541524850590}]
...
GenericMessage [payload=w567, headers={id=83ab8720-f1c1-a4b1-b2ac-2a24a93bd00c, timestamp=1541524850590}]
GenericMessage [payload=w566, headers={id=d97946f2-1cf6-d681-fa88-08a4e708e61e, timestamp=1541524850590}]
GenericMessage [payload=w567, headers={id=83ab8720-f1c1-a4b1-b2ac-2a24a93bd00c, timestamp=1541524850590}]