问题标签 [publish-subscribe]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
28878 浏览

python - 推荐的 Python 发布/订阅/调度模块?

来自PyPubSub

Pypubsub 为您的 Python 应用程序提供了一种简单的方法来解耦其组件:应用程序的一部分可以发布消息(有或没有数据),而其他部分可以订阅/接收它们。这允许消息“发送者”和消息“侦听者”彼此不知道:

  • 一个不需要导入另一个
  • 发件人不需要知道
    • “谁”收到消息,
    • 听众将如何处理数据,
    • 或者即使任何侦听器都会获取消息数据。
  • 同样,听众也不必担心消息来自哪里。

这是实现模型-视图-控制器架构或任何促进其组件解耦的类似架构的绝佳工具。

从 PyPubSub 到PyDispatcher再到简单的“自制”类,似乎有相当多的 Python 模块用于发布/订阅。

在比较不同的不同模块时,是否有特定的优缺点?哪些模块集进行了基准测试和比较?

提前致谢

0 投票
1 回答
1149 浏览

opensocial - pubsub 如何在 OpenSocial 中工作?

我正在尝试设计一个基于OpenSocial API的应用程序,但我不确定pubsub设备将如何工作。这似乎类似于 Unix 管道,或者可能是 RSS 提要。

跨浏览器/计算机的通道是否持久?也就是说,我可以在浏览器 A 上订阅频道“x”并在浏览器 B 上发布到“x”,并在浏览器 A 中读取这些数据吗?如果没有,是否有一种方便的开放社交方法来完成同样的事情?

另外:如果一个小工具在数据发布后订阅了一个频道,那么该数据仍然可以读取吗?

0 投票
2 回答
536 浏览

winforms - 自定义发布/订阅事件和在 Winforms 中构建它 .Net 事件

我必须设计和实现自己的发布订阅事件以满足动态 UI Winform 设计的要求。是否有任何支持 pub/sub 的 .Net 库可供我比较和改进?

0 投票
2 回答
1823 浏览

c++ - 发布/订阅和智能指针

我想实现一个简单的发布/订阅模式,其中:

单个发布者向其订阅者发布令牌(指向对象的指针)。发布者和订阅者都是独立的线程。我计划为每个订阅者添加线程安全队列,以便发布者可以在订阅者处理令牌时继续将令牌分发给订阅者。

如您所见,这意味着所有订阅者实际上共享相同的指针(注意:订阅者无论如何都不能修改指向的对象,所以没有问题)。一旦共享指针不再被任何订阅者使用,如果指针可以在最后一个订阅者线程完成后自动删除它自己,那就太好了。

这是使用智能指针的好地方吗?如果是这样,我应该使用哪些智能指针?

我在 Windows 上使用 MSVC2008 进行开发,并且正在使用 Intel TBB、Boost 和 Qt。

0 投票
1 回答
9086 浏览

wcf - 通过 WCF 双工通道长期运行的回调合同 - 替代设计模式?

我有一个 Windows 服务,可以将雷达枪的速度读数记录到数据库中。此外,我将该服务设为 WCF 服务器。我有一个订阅服务的表单和一个 CF 客户端,只要有满足特定标准的读数就会被回调。

这原则上有效,但一段时间后通道超时。长时间运行的连接似乎存在一些基本问题(请参阅 http://blogs.msdn.com/drnick/archive/2007/11/05/custom-transport-retry-logic.aspx)和双工 HTTP 回调可能不是正确的解决方案。还有其他方法可以使用 WCF 实现发布/订阅模式吗?

编辑:即使有 2 小时的超时,频道最终也会受到影响。我收到此错误:

无法完成“SignalSpeedData”操作,因为会话通道等待接收消息时超时。要增加超时,请在配置文件中的绑定上设置 receiveTimeout 属性,或直接在 Binding 上设置 ReceiveTimeout 属性。

这发生在最后一次成功通话后 15 分钟。我想知道是否可以为每次通话重新建立一个新的会话,而不是保持会话打开。

0 投票
3 回答
1713 浏览

c++ - 用于 C++ 的 Python 的 PubSub/观察者模式?

我正在寻找 Python PubSub 库的 C++ 替代品,在该库中我不必将信号与插槽左右连接,而是可以注册一种特殊的消息,而不知道可以发送它的对象。

0 投票
1 回答
232 浏览

replication - 订阅者数据库到发布者数据库

如果事务复制数据库的发布者端由于某种原因与其备份一起出现故障,我将如何以最小的影响和时间让订阅者数据库再次成为发布者。

据我目前了解,订阅者数据库加载了复制所需的触发器和视图

TIA戈帕尔

0 投票
2 回答
1287 浏览

architecture - 架构模式 Pub/Sub 扩展和灾难恢复

我们将有一个源系统通过符合 JMS 的发布/订阅基础设施广播消息。对于大多数发布的消息,订阅者将是使用消息中的数据更新屏幕的 GUI 应用程序。

然而,其中一个订阅者将是翻译服务。对于发布的某些消息,翻译服务会将消息翻译成不同的格式,并将其发布到企业不同部分拥有的辅助消息传递基础架构上。

如何扩展我的翻译服务并在理想情况下提供主动-主动容错?一些注意事项:

  • 消息需要按顺序发布到辅助消息传递基础架构上。
  • 消息只能在辅助消息传递基础架构上发布一次。

基本上,我如何确保只有 1 个翻译服务订阅者响应消息?我是否需要切换到基于队列的系统(但我的 GUI 仍需要发布/订阅语义)?

请注意,翻译服务将押注托管在 Windows Server 2003 中的 .Net 3.5 应用程序。我们提供 F5 Network 的 BigIP LTM/GTM。

需要更多详细信息,请询问/评论。

提前致谢。

0 投票
2 回答
192 浏览

c#-3.0 - 我应该在 C#3.0 中支持 Pub-/Sub-Scenarios 的 Co-/Contravariance 吗?

在我的应用程序中,我正在创建一个简单的事件中心,它为注册订阅者提供了一些东西:

并用于发布事件。

非常简单。我想路由Publish<int>(0)到所有实现的订阅者ISubscriber<int>.

不太难的是,我希望订阅者 EventType 是逆变的。所以ISubscriber<object>基本上应该消耗掉一切。我不希望他们也使用值类型。

用 C#4 没问题,但现在我用 C#3 做这些事情,只是用接口假装逆变:

好吧,现在,我想像这样将数据打包成“事件类型”。该事件的通用参数必须是协变的。

当我发布Publish<DataChanged<B>>(new DataChanged<B>(new B())(给定 B:A)时,应通知订阅者DataChanged<A>Data 是传递给的 B 实例的位置DataChanged<B>。所以我也需要协方差支持。

我想编写一个支持 Co-/和逆变的库,如下所示:

这将允许像这样的转换(不是强制转换!):

你怎么看?可能吗?考虑使用动态代理来做这件事。

0 投票
5 回答
1283 浏览

.net - 我应该使用什么技术来实现可从 .NET 访问的持久订阅者?

假设是一个绿色项目,选择何种技术、库、中间件等可以最容易地在 Windows 和 .NET 上通过持久订阅实现发布-订阅消息传递?我使用 Google 找到了 WCF Peer Channel,这似乎可以满足我的大部分需求,但我认为它不能保证消息排序,也不能将消息持久保存到磁盘以确保可靠性。微软说这些功能可以叠加在上面,但我一直在寻找已经拥有它们的东西。

MSMQ 分发列表接近我想要的,但我更喜欢消息传递层不必预先知道所有客户端的东西。

订阅人数并不多,大概不到20人。

发布者和订阅者都在 C#/.NET 中实现并在 Windows 上运行。

编辑:我正在研究面向消息的中间件和服务总线建议。我熟悉这个领域的企业级产品——我真的在寻找简单轻巧的东西。查看每个产品需要一段时间,但我会尝试总结我的发现。