问题标签 [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 投票
1 回答
602 浏览

xmpp - 通过 IM 客户端接收 PubSub 通知

我是 Openfire 和 XMPP 的新手,有些事情对我来说有点不清楚。

我想在网站上发布新博客文章时使用 pubsub 通知所有订阅者。订阅者应该能够通过他们选择的 IM 应用程序(例如 Adium)接收这些通知。问题是收到的通知是这样的:

常客无法解释。我应该将这种类型的消息转移到 IM 客户端可以理解的东西上,最好是聊天消息?这应该作为服务器插件的额外功能添加,还是有其他方式?有没有这样的示例实现?

提前致谢

0 投票
2 回答
3166 浏览

c# - NServiceBus 发布/订阅

我们正在尝试找到一种优雅的解决方案,用于报告从我们的基础架构中的系统生成的异常,该解决方案比查看电子邮件或检查日志文件更易于操作。跨服务总线的发布/订阅模型可以很好地解决这个问题。服务将发布错误/事件,订阅者可以使用简单的模式匹配过滤这些消息。

我们一直在研究 NServiceBus 项目,想知道它是否能满足我们的要求,查看 PubSub 示例 ( http://docs.particular.net/samples/pubsub/ ) 我们注意到它没有解决以下两种情况:

  1. 所有发布者发布相同的消息类型
  2. 订阅者不应要求了解发布者端点

我们已经设法实现了这些要求,但我们不确定配置是否正确。以下是我们的解决方案:

  1. 所有发布者共享相同的订阅存储配置 (DBSubscriptionStorage),这是一个共享数据库,如文档http://docs.particular.net/nservicebus/messaging/publish-subscribe/的订阅存储部分中所述

  2. 所有发布者/订阅者都配置为使用 nservicebus 网站上的文档中描述的分发者。

我们想知道这是否是 NServiceBus 发布/订阅模型的正确实现,或者是否有其他解决方案可以实现我们的目标?

0 投票
6 回答
42270 浏览

java - java中的轻量级发布/订阅框架

是否有提供发布/订阅模式的良好 Java 轻量级框架?

一些理想的特征

  • 支持泛型
  • 向发布者注册多个订阅者
  • API 主要是接口和一些有用的实现
  • 不需要纯粹的内存、持久性和事务保证。

我知道 JMS,但这对我的需要来说太过分了。发布/订阅的数据是文件系统扫描的结果,扫描结果被馈送到另一个组件进行处理,然后在被馈送到另一个组件之前对其进行处理,依此类推。

编辑:都在同一个过程中。bean 中的 PropertyChangeListener 并没有完全消除它,因为它报告属性的更改,而不是发布特定的项目。我可以通过拥有“最后发布的对象”属性以及发布的对象来强制 ProprtyChangeListener 工作。PropertyChangeListeners 不支持泛型,并且根深蒂固于属性更改语义,而不是纯粹的发布/订阅。java.util Observer/Observable 模式会很好,但 Oberver 是一个具体的类。

0 投票
7 回答
641 浏览

.net - 基于消息的多线程或线程池用于简短且不常见的操作?

我目前正在使用 Retlang 在 .NET 中进行基于消息的多线程,这是一个很棒的库。我不再有显式锁,每个线程都在做自己的事情,管理应用程序的一部分并通过消息与其他线程通信。

我现在必须实现我的应用程序的一项功能,该功能也可以有自己的发布者/订阅者线程。唯一的问题是这个线程实际上会做很少的工作。预计每 10 分钟左右会收到来自发布者的消息。当收到一条消息时,它会做一些工作,但不会超过几百毫秒。

所以我开始怀疑让一个线程在 99.9% 的时间里处于休眠状态是否真的是一个不错的选择。这种操作有线程池,但由于我无法控制接收消息的线程,所以我不得不求助于丑陋的、容易出错的锁。

我的问题是:在资源方面,让线程闲置,等待绝大多数时间真的是个问题吗?在使用良好的基于​​消息的架构之后使用共享多线程感觉就像回到过去,而且它将是应用程序中唯一带有锁的部分。但我一直在想“我在这里做错了吗?” 用这个线程。

编辑:谢谢大家,在阅读了你们的每一个答案后,我决定另一个线程不是那么大的问题。我的应用程序将仅与基于消息的多线程保持一致,如果我真的有性能问题(但不应该是这样),我会进一步调查。

0 投票
1 回答
522 浏览

windows-server-2008 - NServiceBus,为什么我可以 Bus.Send,但不能 Bus.Publish?需要帮助调试

好的,

快速背景

  1. 我们使用 NServiceBus 2.0 和标准配置,没有什么“疯狂”的事情发生。

  2. 应用程序是 .NET 3.5

  3. 开发环境是发布者和订阅者在同一个盒子上,Windows 7。

  4. 暂存环境是发布者和订阅者在不同的盒子上,一个是 Windows 7,另一个是 Windows Server 2008。

行为

  • 在开发环境中,发布者订阅者工作正常,这表明代码本身在启动、配置容器等方面是可以的,并且所有消息都被正确配置,即大小、序列化等。

  • 在暂存环境中,发布者成功接收到订阅请求。

  • 它还成功地将订阅者存储在 Subscription 表中(SQL Server,我们使用的是 DBSubscription),并且“queuename@machinename”是正确的。

问题

在 Bus.Publish() 上没有任何反应。没有创建传出队列,没有在任何地方发送或创建消息,也没有抛出错误。

额外信息

  • 有趣的是,来自 Publisher 的 Bus.Send 工作正常!当然,我必须将其添加到配置中:

    <UnicastBusConfig> <MessageEndpointMappings> <add Messages="Library.Messages" Endpoint="subscriberqueue@machinename"/> </MessageEndpointMappings> </UnicastBusConfig>

  • 发布者也可以解决:

ping 机器名

那么,发生了什么事,我应该注意什么?

为什么 SEND 有效,而 PUBLISH 无效?

如何让 PUBLISH 正常工作?

0 投票
1 回答
145 浏览

c# - 为什么客户端不针对相同的发布/订阅服务运行获取彼此的消息?

我正在尝试通过 WCF 实现发布/订阅。我的问题是来自一台计算机的多个客户端按预期工作,但同一网络上另一个盒子上的客户端没有收到消息。

我正在关注这个博客教程:http ://chakkaradeep.wordpress.com/2007/07/30/coding-wcf-publishersusbcriber-model/

我在我的网络上的 IIS 机器上托管 WCF 服务,并在 2 台单独的网络机器上运行测试客户端的多个实例。一台机器可以毫无问题地从服务器退回消息,但另一台机器的客户端应该收到这些消息,而他们只是没有。我需要设置一个特定的配置标志以允许我想要的吗?

0 投票
5 回答
6735 浏览

c++ - 中介者模式与发布/订阅

有人能指出两者之间的主要区别吗?

似乎,至少在概念上,两者是非常密切相关的。如果我冒险猜测,我会说发布/订阅方法是中介模式的一个子集(因为中介不一定必须以发布/订阅方式使用,但后者似乎需要一种中介目的)。是不是离它很近?

0 投票
2 回答
393 浏览

java - N 层发布/订阅者设计问题

我刚刚开始研究如何为一个好的软件系统编写一个好的架构,并且我正在学习如何将高级组件分成层。在这种情况下,我尝试使用层,以便将每个层建模为一个黑盒。

我的架构中有 4 层:表示层、应用程序服务、业务逻辑和域/持久性。就我的问题而言,我们真的只需要关注演示和应用程序服务。

应用服务层将包含一个允许跟踪某个事件的服务。演示文稿将有几个视图,这些视图应该随着事件跟踪模型的变化而动态更新。从本质上讲,我似乎需要一种单向的变化传播机制。

由于我试图将这些层建模为层,因此我想限制每个层的外观对象之间的通信,并在必要时允许层聚合来自较低层的对象,尽管仅由接口知道。

我正在用 Java 编写这个应用程序,所以很明显要使用的是 Observable/Observer。但是,我不喜欢 Observer 接口的更新方法强迫您强制转换对象参数。我想通过为这个机制定义我自己的接口和类来解决这个问题。那么,问题在于应用程序逻辑将依赖于表示层的接口,这对于该架构来说是一个禁忌。这是否表明我应该首先尝试使用 MVC 建模并分层模型?或者使用应用程序服务层中已知的接口对每个视图进行建模会更好。这似乎是一个不好的地方,我被困住了。另外,我使用 View-Handler 设计模式来处理多个视图。

0 投票
2 回答
897 浏览

wpf - WPF 事件、命令或同时使用

我正在构建我的应用程序基础结构,并且发现很难实现非常基本的行为 - 我想从系统中的不同用户控件引发事件,并能够在其他一些侦听它们的用户控件上捕获这些事件。例如,我有一个实现 TreeView 的用户控件。我有另一个实现 ListView 的用户控件。现在,我希望我的 ListView 监听 TreeView,并且当 TreeView 上的选择发生更改时,我想相应地重新填充我的 ListView。即使 ListView 不在 WPF 逻辑树上的 TreeView 中,我也希望发生这种情况。

请帮忙!!

谢谢,奥兰

0 投票
1 回答
617 浏览

python - python中的延迟事件发布订阅

我的谷歌应用引擎应用程序需要一个事件消息系统。

我指的是以下python库。

http://pubsub.sourceforge.net/apidocs/concepts.html

我的问题是,我要执行的侦听器函数是否必须导入(或以其他方式存在)到执行路径的某处才能在事件上运行它?

有很多事件,我想让它尽可能延迟加载。

可以解决什么问题?

python中是否有任何惰性事件发布订阅框架?