问题标签 [event-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.
java - 何时使用事件总线?
我正在为一个新的 Java Web 应用程序设计后端,并试图决定是否使用事件总线;特别是番石榴EventBus
。
大多数服务器端请求将是同步的:也就是说,用户正在请求数据并且需要在几秒钟内得到响应。但是,也有相当多的请求可以是异步的,并且在客户端是“一劳永逸”的。只要它们最终得到处理,如果需要 2 秒或 2 小时来处理,客户可能不太在意。
对于这些异步请求,我计划让侦听映射 URL 的 servlet 将请求发布到队列。然后,消费者将出列每个请求并将其路由到适当的处理程序。这是EventBus
可能或可能不会发挥作用的地方。将请求路由到正确的处理程序的业务逻辑非常复杂。通常骆驼路线将是完美的解决方案。在我的用例中,我想知道是否可以将一堆“处理器”(事件处理程序)连接到同一个事件总线,然后让每个处理器相互触发和接收事件,直到最终结果是产生。
我想说我已经探索过使用 Apache Camel,并且我相信 Camel 是完成这项工作的正确工具。可悲的是,由于这个问题范围之外的原因,我不会使用它。所以我开始想出类似骆驼的解决方案,这就是我如何到达 Guava 的EventBus
. 但它可能不是一个合适的替代品。
我想我正在寻找Event Bus
模式解决的问题分类,然后我需要确定它是否与我的用例匹配。
gwt - 如何通过事件总线告诉 GWT 单元小部件数据已更改?
我有一个 GWT 单元树,用于显示来自 CMS 的文件结构。我正在使用AsyncDataProvider
从我创建的自定义 RPC 类加载数据。我还有一个 Web Socket 系统,它将广播来自也在系统中工作的其他客户端的事件(文件创建、重命名、移动、删除等)。
我想要解决的是当我收到这些事件之一时,我如何正确更新我的细胞树?
我想这个问题类似于在页面上有两个我的 Cell Tree 实例,它们呈现相同的服务器端数据,并希望确保当用户更新一个时,另一个也更新,通过使用EventBus
.
我觉得这应该很简单,但我现在已经花了大约 6 个小时,没有任何进展。我的代码包括在下面:
注意:我没有使用 RequestFactory,即使它看起来像是我的自定义 RPC 框架。此外, FileEntity 只是一个文件的简单表示,其名称可由getName()
.
java - GWT:如何在两个模块之间共享一个 java 对象(即:EventBus)
我正在构建一个大型应用程序,我想将其拆分为几个模块,例如用于初始化的核心模块、用户管理等……、客户模块、生产模块等……</p>
我想将它拆分为多个 GWT 模块(不使用 GWT 拆分技术)并共享一个 EventBus 来广播一些事件,例如 LoginEvent、LogoutEvent。我不想使用代码拆分技术,因为我想减少编译时间并只重新编译我修改过的模块。这还允许通过注释 HTML 主机页面中的脚本标记来启用或禁用模块。
我使用 JSNI 编写了以下代码:
但是在浏览器中执行时,我在 Firebug 中有以下异常:
我还复制了实现/接口客户事件的 MyEvent 和 MyEventHandler 类。
PS:我也知道包含注释其他模块引用以避免编译它的技术。
android - 应用程序崩溃说不包含库,即使它是
在我对其进行 git reset 之前,我的 Android 应用程序似乎一直运行良好。现在它不断崩溃并说我正在使用的库不存在。
这是我得到的崩溃日志
我也尝试过恢复最后一个已知的工作副本。会不会是我机器的问题?
scala - Akka 事件总线教程
关于如何在akka中使用事件总线有什么好的教程/解释吗?我已经阅读了 Akka 文档,但我发现很难理解如何使用事件总线
java - 哪个 EventBus 更适合新的桌面应用程序?
几年来,我们org.bushe.swing.event.EventBus
主要用于摆动桌面应用程序。API 非常一致,并且易于使用。但是现在已经出现了新的要求,并且它希望一些 EventSubscriber 应该比其他的更受青睐,因为它们是同步通知的。因此,这些订阅者需要某种优先级因素。
扩展 EventBus 以优先考虑 EventSubscribers 应该不是什么大问题,但是由于org.bushe.swing.event.EventBus
已经过时,我不确定是否最好更改 EventBus 实现。
org.bushe.swing.event.EventBus本身为 GWT 推荐了像GWT Eventbus这样的项目。我不确定这是否也是摆动应用程序的好方法。您通常使用哪些 EventBus 实现?您甚至可能知道支持订阅者优先级的简单实现吗?
java - 具有空引用的 Guava/Otto EventBus
假设以下场景具有 A、B 类和事件总线的一个实例(它可以是Guava 事件总线,由 Google提供,也可以是Otto 事件总线,由 Squ.re 提供)
现在,如果我运行它(仅用 Otto 测试)onSomething
被调用 2 次。
¿ 事件总线是否会保留对“ a
”的引用,直到调用取消注册?
更重要的是
¿ 如果由于某种原因我无法确定 ' a
' 为空的时刻,那么事件总线将永远持有对该对象的无用引用(内存泄漏)?
events - GWT - EventBus 为不再存在的对象调用事件
我在一个大程序中遇到了这个问题,所以我写了一个小样本来测试它。我希望有人可以向我解释这一点。
这是代码:
之后我执行以下操作:
现在按照我的逻辑,这个输出应该是一个单一的“测试”;事实上,它是两个“测试”,处理程序被调用了两次。我真的不明白为什么会这样;c1 是单个对象,所以不应该只调用一次处理程序吗?
gwt - EventBus 可以在 GWTP 中调用分离的 Presenter(不是嵌套的 Presenter)吗?
好的,这是我的问题。我有 2 位演示者:FirstPresenter(例如:abc.com#first)和 SecondPresenter(例如:abc.com#second)。SecondPresenter 上有一个按钮,当用户单击该按钮时,FirstPresenter 将弹出一条消息。
所以,这就是我所做的,我使用eClipse创建了一个事件名称MyEvent,eclipse生成了一个类MyEvent.java
在 SecondPresenter 上,我得到:
在 FirstPresenter 上,我得到:
如果 FirstPresenter 是嵌入在 SecondPresenter 中的嵌套演示者,那么上面的代码可以正常工作。但是如果他们是 2 个独立的 Presenter,那么上面的代码就不起作用了。
为什么?我检查了谷歌文档,他们只是说 EventBus 可以调用 Presenter,他们没有说它必须是嵌套的 Presenter,所以我假设 EventBus 可以调用任何单独的 Presenter。
我改为private EventBus
,public EventBus
但它没有帮助。
我错过了什么?
编辑:
我稍微改变了我的代码,它部分工作。我不确定我做对了,因为它仍然存在一些问题。
好的,在 FirstPresenter 我实现了 MyHandler & Override onMy 方法
当我单击 SecondPresenter 上的按钮(Webbrowser 的第二个选项卡上的页面)时,我看到第二个选项卡上弹出消息(即浏览器没有使第一个选项卡成为焦点),但是当我单击 FirstPresenter (第一个选项卡上的页面)我没有看到Label("test")
?
为什么它可以调用 Window.alert 但没有将 Label 添加到 FirstPresenter?
另外,如何让浏览器将焦点设置在 FirstPresenter 上(即显示第一个选项卡)?
我错过了什么吗?
java - 为什么 CurrentUser 在 gwtp-sample-tab 中实现 HasHandlers?
我正在自学 GWT 和 GWTP。我正在尝试设置我的日志记录服务,并且我希望在显示任何依赖它的 Presenter 之前从服务器检索我的 currentUser 对象。
但是,我遇到了一个问题,我认为这与我不明白为什么在 gwtp-sample-tab 示例中,类CurrentUser 实现 HasHandlers!
有人可以向我解释吗?编辑一个更精确的问题:我想知道为什么在示例的上下文中,CurrentUser 需要实现 HasHandlers。这在应用程序中满足什么功能?
非常感谢,马努
PS。我是 StackOverflow 的新手,所以如果您认为我的问题有问题,请告诉我。