gpt4 book ai didi

Spring Integration - 以编程方式创建/拆卸 channel

转载 作者:行者123 更新时间:2023-12-05 00:27:45 27 4
gpt4 key购买 nike

是否可以以编程方式创建/拆除 Spring 集成 channel ,而不是在 Spring 配置中静态声明它们?

我的情况是这样的:

我有一个需要推送通知的 web 应用程序,所以我使用了长轮询。那些长轮询调用需要在服务器上阻塞,直到它们得到一个事件。

我所设想的(当然对替代方案持开放态度)是每个 session 的 Spring Integration 队列 channel ,每个 session 都监听单个 pubsub channel 。因此,当服务器事件发生时,它将被发布到 pubsub,然后它将通过管道向下传递到各个 session 队列,在那里它们将被弹出并发送到正在轮询的客户端。

为此,在创建 session 时,我必须在 pubsub channel 上注册新的队列 channel 列表。当 session 被销毁时,该新队列也将被销毁。

这样的事情可能吗?

我不想让 session 直接监听 pubsub,因为存在丢失消息的风险,所以我想在两者之间设置一个队列来缓冲它们。

谢谢,
罗伊

最佳答案

是的,你可以简单地实例化一个 QueueChannel并将其设为 outputChannelBridgeHandler .然后创建一个 EventDrivenConsumer ,在构造函数中传递 pubSub 和桥接处理程序。

调用 start()在消费者上使其订阅 pubSub,和 stop()在 session 关闭时取消订阅。

如果你不想手工连接这些组件,只需声明队列 channel ,并在一个小的应用程序上下文中桥接;使其成为您的主上下文的子级,它将自动订阅父上下文中的 pubSub。调用 context.destroy()断开连接。

关于Spring Integration - 以编程方式创建/拆卸 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20126706/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com