如果int-jdbc:inbound-channel-adapter中配置的通道已满,则在那之后进行轮询还是不进行? 我可以在int-jdbc:inbound-channel-adapter中使用队列通道吗? 我的要求是,如果通道已满,则不应进行任何数据库调用,直到通道空闲为止。
答案 0 :(得分:0)
您需要使用容量受限制的QueueChannel
。只要任何入站通道适配器将MessagingTemplate
与sendTimeout = -1
一起使用,QueueChannel
都会对基础put()
执行LinkedBlockingQueue
操作:
/**
* Inserts the specified element at the tail of this queue, waiting if
* necessary for space to become available.
*
* @throws InterruptedException {@inheritDoc}
* @throws NullPointerException {@inheritDoc}
*/
public void put(E e) throws InterruptedException {
为确保轮询器在空间可用之前被阻止,您应使用fixed-delay
选项不允许对DB的任何并行调用。
因此,换句话说,到目前为止,只要您使用默认选项即可。