int-jdbc:入站通道适配器的通道深度

时间:2018-07-29 11:57:22

标签: spring-integration spring-jdbc

如果int-jdbc:inbound-channel-adapter中配置的通道已满,则在那之后进行轮询还是不进行? 我可以在int-jdbc:inbound-channel-adapter中使用队列通道吗? 我的要求是,如果通道已满,则不应进行任何数据库调用,直到通道空闲为止。

1 个答案:

答案 0 :(得分:0)

您需要使用容量受限制的QueueChannel。只要任何入站通道适配器将MessagingTemplatesendTimeout = -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的任何并行调用。

因此,换句话说,到目前为止,只要您使用默认选项即可。