我试图了解使用core.async/pipeline处理错误的正确方法是什么,我的管道如下:
input --> xf-run-computation --> first-out
first-out --> xf-run-computation --> last-out
Run Code Online (Sandbox Code Playgroud)
xf-run-computationhttp会在哪里进行调用并返回响应.但是,其中一些响应将返回错误.处理这些错误的最佳方法是什么?我的解决办法是在分裂输出通道success-values和error-values,然后将它们合并回一个信道:
(let [[success-values1 error-values1] (split fn-to-split first-out)
[success-values2 error-values2] (split fn-to-split last-out)
errors (merge [error-values1 error-values2])]
(pipeline 4 first-out xf-run-computation input)
(pipeline 4 last-out xf-run-computation success-values1)
[last-out errors])
Run Code Online (Sandbox Code Playgroud)
所以我的函数将返回最后的结果和错误.
我的项目有外部依赖,所以我配置了webpack:
externals:{
'd3':'d3',
'another-external-dep': 'another-external-dep'
}
Run Code Online (Sandbox Code Playgroud)
然后在代码中我需要这样的依赖:
var someProp = require('another-external-dep').someProp.
一切都很好,直到我整合业力.因此,当运行测试时,业力无法another-external-dep清楚地找到模块,因为它是外部依赖,并且我没有包含在文件列表中的karma配置中.
我如何模拟another-external-dep这样require('another-external-dep')返回模拟?还有我可以在配置或模拟中指定这个模拟的地方?
我有一个应用程序,多个用户可以发送 REST 操作来修改共享对象的状态。当一个对象被修改时,将会发生多个操作(数据库、审计、日志记录......)。
并非所有操作都有效,例如您无法在删除对象后对其进行修改。
使用 Kafka 我正在考虑以下架构:
我不太确定第三点。我不喜欢保留所有对象的状态的想法。(我有数十亿个对象,即使一个对象的大小可以达到 10mb,我需要存储来验证其状态的也只是几 KB...)
然而,这是一种常见的模式吗?否则如何验证某些操作的有效性?
另外,您将使用什么作为内存数据库?当然它必须具有高可用性、容错性并支持事务(读和写)。
streaming in-memory-database apache-kafka kafka-consumer-api apache-kafka-streams
apache-kafka ×1
clojure ×1
commonjs ×1
core.async ×1
karma-runner ×1
pipeline ×1
streaming ×1
webpack ×1