Roy*_*ove 3 spring spring-integration
是否可以通过编程方式创建/拆卸Spring Integration通道,而不是在Spring配置中静态声明它们?
我的情况是这样的:
我有一个需要推送通知的Webapp,所以我正在使用长时间轮询。那些长时间的轮询调用需要在服务器上阻塞,直到它们收到事件为止。
我所设想的(当然是对替代方案开放的)是每个会话的Spring Integration队列通道,每个会话都监听单个pubsub通道。因此,当发生服务器事件时,它将被发布到pubsub,然后将其管道传输到各个会话队列,在这些会话队列中,它们将被弹出并发送到进行轮询的客户端。
为此,创建会话时,我必须在pubsub通道上注册新的队列通道列表。当会话被销毁时,该新队列也将被销毁。
这样的事情可能吗?
我不想让会话直接监听pubsub,因为有丢失消息的风险,因此我希望在两者之间有一个队列来缓冲它们。
谢谢罗伊
是的,您只需实例化a QueueChannel并将其设为a outputChannel的BridgeHandler。然后创建一个EventDrivenConsumer,在构造函数中传递pubSub和bridge处理程序。
调用start()使用者以使其订阅pubSub,并stop()在会话关闭时取消订阅。
如果您不想手工连接这些组件,只需声明队列通道,然后在一个小的应用程序上下文中进行桥接即可。使其成为您主要上下文的子级,它将自动在父上下文中订阅pubSub。致电context.destroy()以断开连接。
| 归档时间: |
|
| 查看次数: |
3184 次 |
| 最近记录: |