问题标签 [orleans]
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.
actor - 奥尔良密钥和数据库记录
我只是在学习 Microsoft Orleans,我想知道如何最好地处理我们的一个场景。我们将有一个接收请求的 REST 服务,这最终会导致在外部系统中创建一条新记录。此记录将具有长 Id 值。然后我们会将这个 ID 返回给调用者。
这种情况的建议是什么?是否应该有一个无状态的grain来处理调用外部系统并获取ID。我在想这个“工厂”grain 然后会创建带有 id 的grain 并向该grain 提供初始信息(因此它不必从外部存储中检索数据)。但是,我不希望它在第一次激活时尝试从外部存储读取此信息。
是否有关于如何使用 Microsoft Orleans grains 处理此问题的建议?
unit-testing - 我如何测试依赖于另一种 Grain 的 Grain?
有两个 Grain,分别命名为 GrainA 和 GrainB。GrainB 依赖于 GrainA。我看到了 Orleans 的样品和TestGrainFactory
罐头制作了一种我可以测试的当地谷物。当 Grain 很简单时,它可以很容易地测试。但在我的问题中,GrainB 依赖于 GrainA,我该如何完成测试?
c# - 奥尔良无国籍工人
我发现很难找到有关使用 StatelessWorkers 的任何详细文档。
我想实现类似的东西。正如文档中所建议的,我需要使用无状态工作者来处理一些消息并激活最终将保持状态的颗粒。
我想让调度程序grain的多个实例处理“初始化”,因为这个grain绝不处理任何状态,并且消息不需要按顺序排队。
我需要将此谷物标记为可重入吗?还是 StatelessWorker (属性)就足够了?
关于激活,似乎我需要继承自IGrainWithIntegerKey
(或类似的接口)。这意味着我需要按如下方式激活谷物:
由于我总是使用 0 作为 ID,是否仍会激活谷物的多个实例?还是我需要创建不同的 ID。看来我不能这样称呼谷物:
即使我继承自IGrain
.net - 调度程序/通知服务建议/架构决策
我需要创建一个推送通知服务(我通过 SignalR/WebAPI 完成)和一个可以在某个日期/时间或某个重复间隔运行的 Future Task Runner / Scheduler。
用例的一个示例是付款提醒服务,如果在到期日之前仍未付款,系统将向“管理员”发送通知,并向“消费者”发送电子邮件/短信。可以手动或自动将提醒推迟到另一个日期或更新到新的日期线。
调度程序服务可能可用于其他任何事情,例如设置手动待办事项、定期提醒、未来的电子邮件/短信发送日期等......并且我正在查看每个日期时间可能有数千封时事通讯电子邮件等......
我研究了几个选项
1) Quartz.net / Hangfire / 后台任务
--> 既可以在 asp.net 中运行,也可以作为 Windows 服务运行。
--> 有计划任务/定期支持等...
--> 对我来说似乎过于复杂,如果与 asp.net 服务相结合,可能效率不高,没有那么可扩展,需要很好地设计它以供将来打样......需要设置额外的商店?
2) 任务调度器
--> 我的焦土/凤凰部署场景不太可行
3) 外部服务
--> Azure 调度程序
--> AWS Cloudwatch 调度程序/事件(也可以触发 SNS/Lambda 等...)
--> 似乎是一个很好的解耦解决方案,但维护/测试/持久性可能是个问题?需要根据解决方案正确设置...不知道如何获得“12 Factor's App”的产品/开发奇偶校验测试等...
4) 事件驱动消息总线
--> 巴士具有良好的耐用性和可靠性,但如果我想取消等会变得复杂......?
--> 未来计划的限制,就像我认为 SQS 只有 15 天限制或类似的东西。
5) 演员模型
--> Akka.net 或 Orleans,设置似乎很简单,还没用过,但似乎有很多符合要求的东西,执行特定任务的小演员,调度程序,高性能,易于添加集群对于更多工作(每个逻辑都是每个演员,其余是配置),易于在本地复制并且很好......单个工作单元演员对我来说很有意义。
--> 没有这方面的经验,但是对于我的场景来说会不会有点过分?对于一个成熟的调度程序来说,这似乎也是一个很好的未来证明。
--> 否定。尚无 dotnet 核心支持
欢迎任何其他建议...我需要在 2 周内完成。
PS 真的很想知道 Google Now Reminders 的架构是什么……这是一项很酷的服务“提醒我在某个时间做某事”,它就可以工作。
c# - Orleans(版本 1.2.3)的依赖注入不起作用
我已经搞砸了几个小时,但我根本无法与奥尔良一起进行 DI 工作。
文档(奥尔良-依赖注入)状态:
首先,您必须在服务器端配置中列出启动类型:
然后你必须编写如下所示的启动类:
}
目前该ConfigureServices
方法没有什么特别的。请忽略这一点。
问题是该方法永远不会被调用。
我正在使用奥尔良 V1.2.3
有什么我想念的吗?
asp.net-mvc - 使用 ASP MVC 作为 MS Orleans 的客户端
我想将 MS Orleans 与 ASP MVC 客户端一起使用。我想在这个星座中使用 mvc 应用程序作为 Orleans Client Observer。我会遇到线程寿命/应用程序池回收等问题吗?奥尔良的文件说
客户端部分,通常是 Web 前端,...
...例如,在 Web 服务器上运行的 ASP.NET 应用程序可以是 Orleans 应用程序的客户端部分。客户端部分在.NET 线程池之上执行,不受Orleans Runtime 的调度限制和保证。
但我不太确定如何解释这一点。
c# - 使用通用奥尔良谷物时“字典中不存在密钥”
刚刚升级到 1.3.0 并且遇到了通用谷物的问题。
显示此问题的示例接口和类:
然后像这样使用它:
获取谷物似乎很好,但是当我在谷物上调用该方法时,我得到:
有什么我想念的吗?也许一些新的配置?这适用于我使用的以前的版本。
编辑:
似乎这是调用拦截器的问题:
providerRuntime.SetInvokeInterceptor((method, request, grain, invoker) => { return invoker.Invoke(grain, request); });
当它被删除时,一切正常。
consul - 尝试使用 Consul 设置奥尔良集群成员资格
我正在尝试使用现有的 Consul 集群作为测试 Orleans 应用程序的成员资格提供程序。
将我的客户端应用程序连接到 Silo 时出现此错误
在 Orleans.Runtime.Host.ConsulBasedMembershipTable 中找不到任何网关。奥尔良客户端无法初始化。
深入研究 ConsulUtils 类,正在检索的条目没有定义 ProxyPort - 并且被丢弃 - 因此是空的结果集。
我像这样初始化筒仓:
我像这样设置我的客户端应用程序:
查看 ConsulUtils 中的代码,我可以看到保存条目时未设置 ProxyPort(即为 0)。所以我假设我在初始化筒仓时遇到了问题 - 但我无法弄清楚它是什么!
orleans - 奥尔良筒仓的最佳最小硬件配置
奥尔良筒仓的最佳最低或推荐硬件(主要是 cores-ram)是什么?对于具有 CPU 任务和 IO 任务的应用程序,并且 orleans 决定根据哪些标准进行扩展,在云中添加更多节点?