问题标签 [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 回答
956 浏览

routing - Apache Camel 能否将 XMPP 存在/发布订阅数据包发送到 XMPP 端点?

我需要接收发布到 JMS 主题的更新,将其转换为 XMPP 数据包(Presence 数据包或 PubSub 数据包)并将其路由到 XMPP 端点。

我使用 ActiveMQ 作为 JMS 提供程序,使用 Apache camel 作为路由引擎。下面给出的是我在 Camel 中的路线(为了简单起见,我从 system.in 而不是 jms 主题中读取):

想法是 user1@banl080161 应该能够发送具有从 system.in 给定的状态的客户存在数据包。我正在从 system.in 读取,制作一个存在数据包,在交换正文中设置这个数据包并代表 user1@banl080161 发送这个存在。

问题:没有任何东西被发送到 XMPP 服务器,我使用 PSI 来查看来自 user1@banl080161 的数据包,user1@banl080161 确实在线,但没有收到自定义存在消息。

有可能在 apache camel 中做这种事情吗?

0 投票
1 回答
1108 浏览

java - 你能指导我在java中很好地实现pub sub吗

rabbitmq 的实现会有很大帮助。10倍

0 投票
1 回答
7235 浏览

rest - 使用阻塞 REST 请求实现发布/订阅

我最近被要求调查与希望使用 RESTful Web 服务提供电话事件(例如线路振铃、分机应答、呼叫清除)的电话系统供应商集成的可行性。

我指出 REST 是一个请求/响应协议,他们正在做发布/订阅。他们建议的解决方案是发出一个 HTTP REST 请求,该请求将阻塞并最终在事件可用或超时时做出响应。

无论哪种方式,都会发出另一个请求以获取下一个事件,依此类推。

这个想法让我感到畏缩,但我确信 iPhone“推送”电子邮件是这样操作的。

这是对 REST 的合理使用吗?

0 投票
4 回答
4468 浏览

c# - 如何通过互联网实现发布/订阅通信

我有一个托管在服务器上的 .Net 服务,以及通过 Internet 连接到该服务器的 .Net 客户端。

我想实现一个发布订阅模型,客户端可以订阅服务上的事件,并在数据可用时将数据推送给他们。另一种方法是让客户端轮询服务器以获取数据,但这对于所需的内容可能太慢了。因此需要发布/订阅类型的通信。

我知道 WCF 绑定 WSDualHttpBinding 确实允许这样做,但是它有一个缺点。根据“Programming WCF Services”作者 Juval Lowy 的说法,

... WSDualHttpBinding 几乎无法使用,因为实际上不可能通过将服务与客户端分开的各种通信障碍进行隧道传输,并且需要找到特定的 Web 服务器机器使得这不切实际。

我将其解释为(如果我错了,请纠正我)要使用 WSDualHttpBinding 进行操作,客户端必须在其机器上打开一个端口(以及任何必要的路由器配置),以便服务器回调通过。如果是这种情况,我不会选择使用 WSDualHttpBinding。也不能选择使用 Windows Azure。

所以我的问题的症结在于,我怎样才能在互联网上实现发布/订阅/回调类型的通信,而不需要在客户端机器上打开端口?开放标准是可以的,但没有必要,因为客户端和服务器都是 .Net,Windows Azure 不是一个选项。

0 投票
1 回答
1528 浏览

xmpp - 如何在数据库中存储 pubsub 有效负载

我正在使用 XMPP pubsub。一切正常。用户可以创建节点,感兴趣的用户可以订阅该节点。但是我想将发布操作存储到 DB。因为在我的应用程序中,很多事情都是由 pubsub 处理的,比如聊天、提要等所以在页面刷新时我想坚持聊天。所以我正在寻找任何将它保存到幕后数据库中的 openfire 插件。就像 openfire 在 MUC(多用户聊天)的情况下保存聊天一样。我不想手动发送 ajax 请求。那么有什么方法可以记录发布项目。

更新:

在我的表单配置中存在一个问题,其中持久项目默认设置为 false。所以我按照您的建议配置了节点。但是我再次在页面刷新时遇到了一些问题。我会用一个例子来解释你。在我的应用程序中,用户 A 登录并创建一个节点,并在成功创建后向用户 B 发送请求,现在用户 B 订阅用户 A 创建的节点。现在,如果任何用户进行页面刷新,我发送一个类型为 get 的 IQ 节获取您上面提到的所有错过的事件。但是我收到错误 400 subid-required。

作为回应,我得到:

所以可以帮助我哪里出错了。我还阅读了链接http://xmpp.org/extensions/xep-0060.html#owner-configure point : 6.5.9.1 说如果请求实体有多个订阅节点但没有指定订阅ID,服务必须向订阅者返回错误。那么这是否意味着我再次订阅了同一个节点?我检查了是否是这种情况,但我只订阅了一次。所以只是找出问题所在。

0 投票
0 回答
1063 浏览

c# - 如何删除 .NET Remoting 致命问题:异常

我正在通过 .NET Remoting 实现发布者/订阅者模式。我的发布者正在等待其 url 上的传入请求。在其一侧,远程环境配置正确,完全没有问题。

在订阅者端,当我从它的一侧向发布者进行一些订阅时,它会挂掉。我的意思是程序挂起,控制台什么也没显示,然后它就消失了,这里也不例外。当我断开发布者的连接时,它现在恢复并跟踪处理并使用堆栈跟踪抛出异常:

这是堆栈跟踪..

问候乌斯曼

0 投票
2 回答
2002 浏览

nservicebus - 订阅自己发布的消息的 NServiceBus 主机

使用的 NServiceBus 版本:2.0.0.1145

问题:

是否可以配置 NServiceBus 主机,使其消费(订阅)他自己发布的消息?

回答:

这似乎是可能的,但在下面的配置中,它在尝试将订阅插入订阅存储时给了我一个事务死锁异常。当您使用 DbSubscriptionStorage 和超过 1 个“NumberOfWorkerThreads”时会发生这种情况。

错误:

Could not execute command:
INSERT INTO Subscription (SubscriberEndpoint, MessageType) VALUES (@p0, @p1)
System.Data.SqlClinet.SqlException:
Transaction was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.

之后,NServiceBus 尝试断开连接但失败,因为事务仍在进行中并引发 UnhandledException。

如何重现:

这是我的 App.Config:

我的总线配置:

这是我的订阅和传奇数据库的 dbProperties:

只要我不将 NumberOfWorkerThreads 增加到 1 以上,一切都可以正常工作。高于此的所有内容都会引发上述错误。

我希望我没有忘记任何事情。提前感谢您的帮助。

0 投票
3 回答
2935 浏览

java - node.js 和 Scala (Java) 之间的连接器

将 node.js 与 Scala (Java) 集成的最佳方式是什么?

到目前为止,我看到的最简单的方法是使用 Redis PubSub 作为中介,node.js 服务器处理 HTTP 请求并将消息发布到请求通道(通过redis-node-client),并订阅了 Scala 演员(例如Akka Redis PubSub 集成)请求通道并将计算结果发布到响应通道(由节点订阅)。

0 投票
1 回答
893 浏览

javascript - Pub/Sub 和 jQuery Data-Link 有什么区别?

本月在波士顿举行的 jQuery 会议上的一个热门话题是 Pub/Sub 的想法 - http://www.bennadel.com/blog/2037-Simple-Publication-And-Subscription-Functionality-Pub-Sub-With-jQuery .htm

一个可以使用 PubSub 执行的常见示例是跟踪一条数据更改值以执行其他事件。据我所知,这可以使用 jQuery 或 jQuery Data-Link 插件来完成,而无需您自己的 PubSub 架构。

我想知道的是,PubSub 所提供的和简单的数据绑定之间究竟有什么区别?

是不是更有效率的表现?

0 投票
5 回答
147 浏览

php - PHP可以锁定下载的内容吗?

我目前正在研究一个将在会员系统上运行的项目。该网站背后的理论是,如果您是该网站的付费会员,您可以下载杂志的电子 (PDF) 版本。

问题出现在下载 PDF 后,它可以发送给任何人并可供任何人访问。有没有办法只允许为 PDF 付费的会员访问它。是否有第三方服务可以托管 PDF 并允许用户在包含该下载唯一的随机字符串的唯一 URL 上阅读它们?

能够阻止公开分发 PDF 并在不成为会员的情况下查看它们的能力至关重要。

有没有人有任何想法?基本上我正在寻找一个类似 DRM 的 PHP 系统(我假设这是不可能的)