问题标签 [event-driven-design]

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 投票
2 回答
80 浏览

c - 将 http 表单值传递给 C 程序

我被指派升级一个用 C 编写的嵌入式应用程序。该应用程序是通过 Web 界面配置的。

当用户修改 Web 应用程序时,会写入一个文件并触摸/var/www/settings.json该文件。/var/www/UPDATE_SETTINGS

在主应用程序循环中,它检查是否UPDATE_SETTINGS存在。如果是这样,它会解析settings.jsonwith json-c 然后删除UPDATE_SETTINGS.

这工作得很好,然而,我们更愿意转移到一个事件驱动的架构(可能是 libev),在这种架构中,settings.jsonwebapp 脚本直接将其馈送到程序到一个普通的 UDP 端口,然后发出一个回调来执行更新.

还有什么其他优雅的方法可以解决这个问题?我们应该坚持目前的方法吗?

0 投票
5 回答
2894 浏览

events - 事件驱动架构...无限循环

我有一个事件驱动的架构,其中 A 正在等待 B 的更改,B 正在等待 C 的更改,C 正在等待 A 的更改,形成一个循环。

现在,如果 B 发生变化,则 A 向 C 触发一个事件,C 向 B 触发,B 向 B 触发,A 向 C 触发……无限期地触发。

我现在可以更改我的程序以不包含此循环,但我担心我可能会在以后将自己置于一个我无法做到的角落。在设计基于事件的系统时如何防止此类事情发生?

0 投票
2 回答
823 浏览

python - Python网络编程设计题

我目前正在用 Python 编写一个项目,它有一个客户端和一个服务器部分。我的网络通信有问题,所以我需要解释一些事情......

客户端主要执行服务器告诉他的操作,并将操作结果发送回服务器。我需要一种在 TCP 套接字上进行双向通信的方法。

现在的情况

我目前LineReceiver在服务器端使用 Twisted 框架,在客户端使用普通 Python socket(and ssl)(因为我无法正确实现 Twisted PushProducer)。在客户端有一个Queue填充了应该发送到服务器的数据;一个子进程不断地从队列中提取数据并将其发送到服务器(参见下面的代码)。

如果只有客户端将其结果推送给经理,则此方案运行良好。服务器不可能向客户端发送数据。更准确地说,客户端无法接收服务器发送的数据。

问题

我需要一种将命令从服务器发送到客户端的方法。

我考虑过在我用来从队列发送数据的客户端循环中监听传入数据:

但是这个解决方案有几个问题:

  • SSLSocket.read()方法是一种阻塞方法
  • 如果队列中没有数据,客户端将永远不会收到任何数据

是的,我可以使用Queue.get_nowait()代替Queue.get(),但总而言之,我认为这不是一个好的解决方案。

问题

有没有使用 Twisted 实现这一要求的好方法?在 Twisted 上,我真的没有太多的技能可以在那里找到自己的路。我什至不知道LineReceiver对这类问题使用 是否是一个好主意,因为如果它没有从客户端接收数据,它就无法发送任何数据。只有一个lineReceived事件。

Twisted(或更一般的任何事件驱动框架)能够解决这个问题吗?我什至没有交流方面的真实事件。如果服务器决定发送数据,它应该能够发送;尽可能不需要在通信端等待任何事件。

0 投票
2 回答
851 浏览

javascript - javascript (node.js):触发多个事件的单元测试代码

我正在尝试编写将测试多个事件触发的单元测试代码(caolan 的 nodeunit)。

所以,我正在测试

因此,仅对 1 个事件进行单元测试很容易。

现在,我习惯于setTimer()倒计时并强制完成 X 时间,但有没有更好的方法呢?

0 投票
3 回答
612 浏览

architecture - 顺序与多线程会计事件处理

我们正在开发一个事件驱动的会计引擎,到目前为止,我们正在以批处理/顺序方式进行所有操作。

问题是每天会创建数千个事件,并且按顺序处理所有事件会使其变慢。

有没有一种安全的方法可以实现多线程事件处理会计引擎,而不用担心财务数据的完整性和一致性?

还是只是安全地玩它并允许遵循批处理/顺序方法更好?

0 投票
3 回答
1502 浏览

javascript - for循环事件驱动代码?

在 redis 数据存储中,我有一个键列表,我想遍历该键列表并从 redis 获取这些值。问题是我正在使用事件驱动语言,通过 node.js 的 javascript

如果 javascript 是程序性的,我可以这样做

但是,我不能,因此..我这样做?

这接缝是错误的,因为我不是一次执行所有请求,然后让回调插入到列表中,而是强制执行顺序调用序列。如果有 1000 个密钥会发生什么?

我可以这样做吗?

0 投票
2 回答
1441 浏览

node.js - 如何勾勒出一个事件驱动的系统?

我正在尝试在 Node.js 中设计一个系统(尝试使用 Node 的并发性来解决我早期的一个问题),但我在弄清楚如何绘制该事物应该如何操作的计划时遇到了麻烦。

我在考虑回调而不是返回值方面非常困惑。流程不是线性的,这真的让我起草它的能力令人难以置信。如何为事件驱动系统绘制操作流程?

我需要一些我可以看到并说“好的,是的,这就是它的工作方式。我会从这里开始,它会在这里给我返回这些结果。”

图片对这个很有帮助。谢谢。

编辑:我正在寻找比UML更细粒度的东西,特别是可以帮助我从我很舒服的阻塞和面向对象的编程结构过渡到我感到舒适的非阻塞和事件驱动结构的东西我不熟悉。

0 投票
1 回答
382 浏览

weblogic - Staged Event Driven Architecture - Weblogic

When should I go for Staged Event Driven Architecture ? Do you see any issues in implementing SEDA in weblogic by having multiple Queues/MDBs as stages ? Any insights on disadvantages using SEDA ?

0 投票
2 回答
10847 浏览

java - Java 和事件驱动编程

我正在使用javaeventing编写一个偶数驱动的 shell 来访问数据库。所以,我的用例是:

  1. 在命令行中打开 shell。
  2. 现在,shell 连接到数据库并监听传入的命令。
  3. 当它收到一个命令时,它会执行它并返回所需的输出。

现在,我怎样才能避免while(!exit){ //do stuff }这种循环呢?如何正确使用 Java 事件?

直接的方法可以是:

但是,我正在寻找 java eventing 是否可以提供更好的解决方案。

更新1:

这是我想要实现的:

1我的应用程序是一个 shell(如 mongodb shell)来尝试一个键值数据库。
2简单代码:

现在,在这里我没有看到 java eventing 的使用,我解决了我的问题,你能告诉我,java eventing 将如何出现在这里?我希望用户触发事件。

0 投票
9 回答
20329 浏览

events - 为什么要分别表示命令和事件?

强调事件的架构中的命令和事件有什么区别?我能看到的唯一区别是命令通常是由系统外部的参与者获取/调用的,而事件似乎是由系统中的处理程序和其他代码获取的。但是,在我见过的许多示例应用程序中,它们具有不同(但功能相似)的接口。