问题标签 [service-fabric-stateful]
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.
c# - 与 Service Fabric 中的两个或多个有状态服务共享队列
是否可以在 2 个或多个有状态服务之间共享一个队列,或者我是否需要通过 tcp/http 直接调用它以将消息放在它自己的内部队列中?
例如; 假设我有我的第一个服务,它根据条件将订单放入队列:
然后我的第二个服务从该队列中读取,然后继续处理。
我在文档中看不到太多关于此的内容,我可以看到该GetOrAddAsync
方法可以接受 uri,但我没有看到有关其工作原理的示例,或者您是否甚至可以进行跨服务?
这背后的想法是将处理拆分到单独的队列中,这样当我们尝试重试消息时就不会处于不一致的状态。
masstransit - MassTransit 和 Service Fabric 状态服务?
我一直在尝试制作一个网站演示,该网站使用 MassTransit 和 RabbitMQ 将消息发布到在 Service Fabric 上作为有状态服务运行的服务。
一切都很顺利,我的客户会发布一条消息:
我的服务结构服务中的消费者定义如下:
这确实使我可以在课堂上使用该消息,并且可以很好地处理它。当我们想要使用 IReliableDictonary 或 IReliableQueue 或任何需要引用从 Service Fabric 服务中的 RunAsync 函数运行的上下文时,就会出现问题。
所以我的问题是,我如何配置(是否可能)MassTransit 以在有状态的 Service Fabric 服务中工作,该服务了解服务上下文本身?
提前谢谢了。麦克风
更新 好的,如果我将注册例程指向我的消息消费者类(例如),我已经在这方面取得了一些进展:
然后在我的消息消费者类中,我可以执行以下操作:
我现在可以成功调用服务消息:
我现在遇到的问题是试图在 IReliableDictionary 上存储一些东西,这样做会导致“对象引用未设置为对象的实例”错误:( ...任何想法都将不胜感激(尽管现在可能要到新的一年才能阅读!)
这导致错误....帮助!:)
c# - 使用多个键调用 Service Fabric Reliable Dictionary
我的情况:
- 包含我可靠字典的有状态服务。
- 无状态 WebAPI 充当端点,因此我的其他 Web 应用程序可以与我的有状态服务进行通信。
- 我的其他 Web 应用程序每次页面加载都会访问我的无状态 WebAPI 超过 5000 次,以从我的可靠字典中获取数据。我知道我知道......我是继承这个遗留代码的幸运儿。
问题:
每次调用的延迟大约为 100 毫秒(如果这有什么不同,我会在本地调试),但乘以 5000,我们现在谈论的是分钟。
而不是传递密钥来调用我的可靠字典超过 5000 次......我可以使用多个密钥对 Service Fabric 进行一次调用吗?
c# - Azure Service Fabric 服务之间的 Http 通信
我的情况:
- 有状态服务
- 充当非 SF 应用程序访问我的有状态服务的端点的无状态 WebAPI。
- Stateful Service 和 Stateless WebAPI 通过 RPC 进行通信。我按照本教程(https://docs.microsoft.com/en-us/azure/service-fabric/service-fabric-add-a-web-frontend)
问题:
我正在尝试将有状态服务和无状态 WebAPI 之间的通信从 RPC 更改为 HTTP 通信,因为我想避免使用接口在服务之间进行通信。这甚至可以通过 HTTP 通信实现吗?如果是这样,我的无状态 WebAPI 如何在不使用接口的情况下调用有状态应用程序中的特定方法?
更新:
感谢 alltej,我开始阅读更多关于 HttpCommunicationListeners 的内容。本教程(https://docs.microsoft.com/nl-nl/azure/service-fabric/service-fabric-concepts-partitioning)很好地解释了 Http 通信。
在下面的代码片段中:“CreateServiceReplicaListeners()”调用 CreateInternalListener(),然后调用“ProcessInternalRequest()”,最后调用“AddUserAsync()”。
asp.net-web-api - 按对等方重置 - Azure 中托管的 Service Fabric Web API
我正在开发托管在 Azure 中的 Service Fabric Web API 项目,该 API 由我们的客户端 iOS 和 Android 应用程序使用,有时我们会通过 Peer 错误重置(这是我们可以在 HTTPScoop 中看到的),我们不会得到来自 API 的响应,我们没有从服务端发现任何问题。作为一种解决方法,我们只是在发生时重建和部署解决方案。无论如何我们可以在 WebAPI 中处理这个问题吗?
谢谢你的帮助
c# - 通过 RunAsync 自动使 Service Fabric Reliable Dictionary 对象过期
我正在尝试向过期的可靠字典对象添加自动删除,看起来我必须根据这个实现我自己的方式:https ://stackoverflow.com/a/36466890/7293543
我的方法是使用“RunAsync”任务并让它不断地运行一个while循环。它在前几次有效,但是一旦我在字典中添加了更多对象,我就会遇到一个奇怪的错误。这是一种愚蠢的方法吗?其他人如何自动清除他们可靠的字典对象?
错误: 在我将一些可靠的字典对象添加到我的字典中后,“while(true)”出现错误。
托管调试助手“FatalExecutionEngineError”在“C:\SfDevCluster\Data_App_Node_2\CacheApplicationType_App339\CachePkg.Code.1.0.0\Cache.exe”中检测到问题。
附加信息:运行时遇到致命错误。错误地址位于线程 0x1980 上的 0x8c46ed90。错误代码为 0x80131623。此错误可能是 CLR 中的错误或用户代码的不安全或不可验证部分中的错误。此错误的常见来源包括 COM 互操作或 PInvoke 的用户封送错误,这可能会损坏堆栈。
azure-service-fabric - 何时或什么是在 Service Fabric 中覆盖无状态服务的 RunAsync 方法的最佳用途
我一直在使用无状态服务编程模型,但我并没有真正重写 RunAsync 方法来运行应用程序逻辑。您通常何时会覆盖此方法?
azure-service-fabric - 在服务结构中的有状态服务中注入无状态服务
我有状态服务,可以处理可靠队列中的数据(在一个while循环内)。数据的处理实际上调用了无状态服务。
由于无状态服务可以从一个节点移动到另一个节点,我在有状态服务的构造函数中注入这种依赖项(无状态服务)是否安全?只是想确保在构造函数中初始化/注入的依赖项没有固定到一个节点。
service-fabric-stateful - 如何在两个有状态服务服务结构之间进行通信?
我在我的服务结构上托管了两个有状态服务。我需要使用服务代理从一个服务通信到另一个服务。像这样的东西
我可以从有状态服务到无状态服务做到这一点,但不能在两个有状态服务之间做同样的事情..
azure-service-fabric - 在有状态服务中全局访问数据
我将用户信息作为每次调用的一部分传递给有状态服务。我将此信息用于服务中的审计目的。
我是否必须在服务中传递这些信息,或者是否有一些其他机制(例如用户上下文)来保存我可以全局访问的数据?我过去曾使用线程存储(数据槽)来保存数据,但由于代码是异步的,我认为这不起作用?