问题标签 [message-bus]

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 回答
84369 浏览

message-queue - 消息队列与消息总线——有什么区别?

有吗?对我来说,MB 了解订阅者和发布者,并充当调解者,通知订阅者有新消息(实际上是“推送”模型)。另一方面,MQ 更像是一种“拉”模型,消费者从队列中拉出消息。

我在这里完全偏离轨道了吗?

0 投票
2 回答
2779 浏览

multicast - 消息总线与多播

我正在开发一个由多个模块组成的应用程序,并要求它们相互共享信息。示例:发布/订阅场景,其中模块发布一些信息(例如状态变量)并且对特定信息感兴趣的模块获取它。或者一个请求/回复场景,感兴趣的模块明确询问信息并得到回答。

我一直在研究不同的消息总线实现,即D-busØMQRabbitMQQPID(后两者基于 AMQP)。然而后来有人指出,与其尝试一些复杂而繁重的消息总线实现,我为什么不简单地使用多播来解决问题。

缺乏经验,看多播是否真的可以解决我的问题,以及了解两种解决方案的优缺点,我恳请专家帮助我。非常感谢。

0 投票
2 回答
9554 浏览

design-patterns - 对消息总线/命令调度程序模式的困惑

最近我读了很多关于分布式消息传递和相关模式的文章。我使用了其中一些工具支持的工具,例如NServiceBus

许多这些模式在互联网上都有描述。我最近读到的其中一些是:

如果使用 NService 总线这样的工具可以在不考虑基础设施问题的情况下做很多事情,那么当我尝试实现基本的消息总线和命令处理程序时,就会出现一些问题。事实上,当谈到这些模式时,我看不出它们之间有很多差异。

我不会粘贴代码,因为它太长了,但我找到了两篇博客文章,它们很好地描述了我想谈论的实现的想法。

这个想法很简单,消息总线跟踪订阅者并将消息分派给不同的订阅者,如果他们感兴趣的话。

它与消息总线非常相似。命令总线调用给定命令类型的命令处理程序。

所以在这两种情况下都有相似之处。

使用一种模式比使用另一种模式的真正区别和好处是什么(我不是在谈论支持工具)。我错过了什么?

第二个问题是。如果没有支持工具,消息总线是否有价值?我不认为自己能够独自推动对所有租户的支持。

对于一个冗长而令人困惑的问题,我深表歉意,但请不要犹豫,询问更多细节。

0 投票
5 回答
4191 浏览

osgi - OSGi 服务的消息总线

我正在进行一个项目,我们将迁移一个基于大量定制技术的主要软件系统,以基于 OSGi 服务。为此,我们可能需要某种与 OSGi 服务配合得很好的消息总线。

  • 同步和异步交付
  • 仅点对点
  • 保证交付 - 最好通过文件持久化
  • 从同一个客户端(异步模式)订购的严格消息,但必须来自不同的客户端
  • 支持进程到进程和节点到节点 nice 但不是严格要求

开源解决方案将是首选,但不是必需的。

我查看了eventbus(如https://stackoverflow.com/a/1953453/796559中的建议),但这似乎效果不佳。

那么问题来了,哪些技术与上述匹配?

0 投票
1 回答
2396 浏览

python - 对象之间消息总线的 Python 选择

我需要一个允许两个 Python 对象通信的消息总线框架。我可以使用哪些现有框架?我认为 DBus 在这一点上是矫枉过正的(必须涉及外部守护程序)。

0 投票
1 回答
2795 浏览

ruby-on-rails - 有 Ruby 消息总线 gem 吗?

我目前正在构建一个带有 rails 进程和多个工作进程的架构,这些进程需要被告知某些事件(如对象的创建)。

我想做以下

虽然进程(API、Worker、Daemons,...)只是订阅消息总线,并在消息进入时调用一个块。

目前,我正在使用本地 unix 域套接字,我将 JSON 推送到其中UNIXSocket并使用EventMachine.start_unix_domain_server. 但这只允许双向通信。我也考虑过使用 resque,但这更像是一个消息队列,而我需要总线。它依赖于redis。我很确定一定有一个 gem,它在 ruby​​ 中实现了一些消息总线,但是谷歌搜索并没有导致任何结果

0 投票
2 回答
1964 浏览

asp.net-mvc - 重载asp.net MVC + Web API应用和异步消息总线的设计考虑

我计划构建一个相当大的应用程序(在并发用户/请求数量方面很大,而不是在功能方面)。

基本上,我会在某处提供服务,即等待命令执行它们,并在稍后确认完成。在发出确认消息之前,该服务将使用服务总线进行通信,最终执行。

此服务的使用者可以是任何类型的应用程序(WPF、SL、...),但我的主要(也是第一个)客户端将是一个 asp.net MVC 应用程序 + WebApi (.Net 4.5) 或仅 MVC (.Net 4.0) ) 与 ajax 控制器动作。

Web 应用程序将依赖 Ajax 调用来保持用户友好的响应式应用程序。

我对这种成熟的异步架构很陌生,我有一些问题可以避免未来的头痛:

  • 我的 web api 调用可能需要一些时间。我应该如何正确设计 api 以支持长时间运行的操作(某种异步?)。我已经阅读了新的 async 关键字,但为了知识,我想了解其背后的内容。
  • 我对服务的调用将包括发布消息并等待确认消息。如果我将它包装在一个方法中,我应该如何编写这个方法?我应该“阻止”直到收到确认(我想我不应该)?我应该返回一个 Task 对象并让消费者决定吗?
  • 我也想知道 SignalR 是否可以帮助我。使用 signalR,我想我可以使用真正的“即发即弃”命令发出,并路由到客户端以确认消息。
  • 我是否完全脱离主题,我应该采取另一种方法吗?

在实现细节/框架方面,我想我会使用:

  • Rabbitmq 作为消息系统
  • Masstransit 抽象消息系统
  • asp.MVC 4 构建 UI
  • Webapi 隔离从 UI 控制器发出的命令,并允许其他类型的客户端发出命令
0 投票
2 回答
797 浏览

c#-4.0 - 我需要服务总线来处理简单的异步命令吗?

我的系统使用带有单独处理程序的命令模式。我的命令在当前处理所有正在处理的命令的 CommandService 上执行。

我有某些命令至少会执行其中一项缓慢的操作:

  1. 发送电子邮件
  2. 生成 PDF
  3. 发送传真
  4. 与第 3 方 Web 服务交互

我希望所有这些命令都在进程外处理,以便 UI 更加灵活。

我应该只为这些命令使用消息总线,还是应该调用进程内命令处理程序BeginInvoke()

编辑 - 附加信息

该系统的用户数量很少(在忙碌的一天可能有 100 个并发用户),因此队列可能永远不会变得很长。这里的主要内容是减少发送带有附件 PDF(相关命令)的电子邮件时 UI 被阻止的时间。员工必须在一天内多次执行该命令。

考虑到整个情况,我想我现在要考虑BeginInvoke()以下几个原因:

  1. 必须触摸所有 UI 交互以确保它们的行为就像命令成功一样。“您需要发送此文档”的提醒在 UI 中的多个位置,并且在发送报告后会刷新整页。
  2. 这是我客户繁忙季节的中间时间(他们在夏季完成了超过 50% 的年度业务),所以此时引入一个我不熟悉的全新基础架构对我来说似乎并不明智管理.

但是知道我现在所知道的,在一个新系统上,我会从一开始就使用服务总线来处理任何慢速命令(实际上每个系统都需要发送电子邮件)并设计 UI,以便更容易地从同步切换命令到异步处理。在实现中,这基本上意味着每个 POST 都是 AJAX 并在 UI 中执行一个动作,就好像它成功了一样。(例如,查看 Facebook 如何处理评论。)

0 投票
0 回答
967 浏览

spring - 如何在 Liferay 中部署 MessageBus?

写在 Liferay Documentation 6.1 关于使用消息总线,

消息总线的配置是使用以下文件完成的: WEB-INF/src/META-INF/messaging-spring.xml - 指定您的目的地、侦听器以及它们之间的映射 WEB-INF/web.xml - 保存一个列表插件的部署描述符。确保将 messinging-spring.xml 添加到此文件中的 Spring 配置列表中。

messing-spring.xml 如何在 web.xml 中列出?

我试过这个

但是tomcat登录了

org.apache.catalina.core.standardcontext start 严重错误 listenerstart

当我删除

tomcat 登录

容器 org.apache.catalina.core.ContainerBase.[Catalina].[localhost]。尚未开始

只想尝试消息总线,当使用发送消息时我无法调用侦听器

我正在 Liferay 6.0.5 中开发 感谢您的帮助

0 投票
4 回答
2526 浏览

node.js - Passing messages from Node.js to external systems?

I'm completely new to Node.JS, if I want to pass messages to external systems using a message/event/servicebus.. what alternatives are there that integrates well with Node?

The messages are just JSON strings, and external systems can be whatever, e.g. a C# agent or some such.

(Maybe this should be on some other part of the site cluser than stackoverflow since it's more of a tech question than programming)?