我喜欢SI允许使用@Gateway
和@ServiceActivator
为频道制作透明代理的方式。
看着这些,我认为所有这些都是为了以下其中一个是真的:
有没有办法以下列方式配置/使用SI:
非常类似于来自Java本身BlockingQueue的put
/ take
。
我在这里忽略了一些限制吗?另外,如果我在Spring中有其他替代方案(我基本上是异步事件总线)具有类似的接口(即不必手动发送消息,而是使用接口以透明的方式使用它),我会很高兴听到他们。
答案 0 :(得分:1)
如果您使用QueueChannel
并将Poller的receiveTimeout
设置为-1,则框架将执行您想要的操作 - 轮询器线程将阻塞receive()
等待对于消息(负超时,它使用take()
封面)。
默认情况下(对于投票消费者),max-messages-per-poll
也是-1(无穷大),这意味着没有"轮询"根本(在第一次触发后),只是阻止。
如果队列有限制,发件人将阻塞直到有空格(当使用-1的发送超时时它使用put()
- 默认值。)