gpt4 book ai didi

java - Spring 集成:QueueChannel

转载 作者:行者123 更新时间:2023-11-30 02:20:34 24 4
gpt4 key购买 nike

简短摘要:

我想将消息发送到队列并让多个线程处理该消息。应用程序应该只是将消息异步发送到网关,但当队列已满时应该被阻止。我还想让队列的交付成为多线程的。我的问题是我的队列永远不会阻塞并接收比其实际大小更多的消息

最佳答案

我不确定你所说的“不阻止”是什么意思。这对我来说效果很好......

@SpringBootApplication
public class So46973604Application {

private final Logger LOGGER = LoggerFactory.getLogger(So46973604Application.class);

public static void main(String[] args) {
SpringApplication.run(So46973604Application.class, args).close();
}

@Bean
ApplicationRunner runner(Gate gate) {
return args -> {
for (int i = 0; i < 20; i++) {
gate.send("foo");
LOGGER.info("Sent " + i);
}
};
}

@Bean
QueueChannel channel() {
return new QueueChannel(10);
}

@ServiceActivator(inputChannel = "channel", poller = @Poller(fixedDelay = "0"))
public void handle(String in) throws InterruptedException {
Thread.sleep(1_000);
}

@MessagingGateway(defaultRequestChannel = "channel")
public interface Gate {

void send(String out);

}

}

前 10 个立即发送,然后由于阻塞等待队列空间而每秒发送一个。

如果您想阻止调用者,为什么您认为需要异步网关?

关于java - Spring 集成:QueueChannel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46973604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com