首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >网关+无轮询的ServiceActivator

网关+无轮询的ServiceActivator
EN

Stack Overflow用户
提问于 2015-03-18 22:06:42
回答 1查看 147关注 0票数 1

我喜欢SI允许使用@Gateway@ServiceActivator对信道进行透明代理的方式。

我在看http://docs.spring.io/spring-integration/reference/html/messaging-channels-section.html#channel-interfaces-subscribablechannel。有两种渠道:

  • Pollable (队列、优先级、交会)
  • 可订阅(直接,执行者,PublishSubscribe)

看看这些,在我看来,所有这些都是为了让下面的一个是真的:

  • 接收者投票
  • 发送方块
  • 消息可以由多个线程一次处理。

是否有一种方式可以配置/使用SI:

  • 发送方发送到队列,并且不会阻塞(除非队列显然已满)
  • 接收者从队列中提取,但不轮询。

与来自Java本身的put / take非常类似。

我是不是忽略了一些约束?此外,如果Spring中还有其他替代方法来实现我试图使用类似接口(基本上是异步事件总线)所做的事情(即不必手动发送消息,而是以透明的方式使用接口),我将很高兴听到这些消息。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-19 19:36:04

如果您使用QueueChannel并将poller的receiveTimeout设置为-1,框架将执行您想做的事情--poller线程将阻塞等待消息的receive() (带有负值超时,它在封面下使用take() )。

默认情况下(对于轮询使用者),max-messages-per-poll也是-1 (无穷大),这意味着根本不存在“轮询”(在第一个触发器之后),只是阻塞。

如果队列有限制,则发送方将阻塞,直到有空间(当发送超时为-1 (默认值)时,它使用put() )。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29133618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档