【发布时间】:2018-04-09 19:59:11
【问题描述】:
我无法创建启用了持久性的集群单例 IService 示例。我尝试在具有 ignite 版本 2.4 的 Win 10 计算机上运行以下 c# 代码。启动应用程序一次工作并产生以下输出(如预期):
- 节点 = 1
- 已部署 =
- 服务初始化
- 服务执行
- 服务已部署..
再次启动同一个应用程序会使它挂在“services.DeployClusterSingleton”。输出是:
- 节点 = 2
- 已部署 =
将“PersistenceEnabled”更改为 false,使两个(甚至两个以上)应用程序都按预期运行。
我不需要服务本身的持久性,而是缓存(不是示例代码的一部分)。我没有找到一种方法来配置服务是否使用持久性。
[Serializable]
public class CounterService : IService
{
public void Init(IServiceContext context)
{
Console.WriteLine("Service Init");
}
public void Execute(IServiceContext context)
{
Console.WriteLine("Service Execute");
}
public void Cancel(IServiceContext context)
{
Console.WriteLine("Service Cancel");
}
}
static void Main(string[] args)
{
var config = new IgniteConfiguration()
{
DataStorageConfiguration = new DataStorageConfiguration()
{
DefaultDataRegionConfiguration = new DataRegionConfiguration()
{
Name = "PersistentDefaultRegion",
PersistenceEnabled = true,
},
},
};
using (var ignite = Ignition.Start(config))
{
ignite.GetCluster().SetActive(true);
Console.WriteLine("Nodes = " + ignite.GetCluster().GetNodes().Count);
var services = ignite.GetServices();
var deployed = services.GetServiceDescriptors().Select(m => ", " + m.Name).ToArray();
Console.WriteLine("Deployed = " + string.Join("\n", deployed));
services.DeployClusterSingleton("test-service", new CounterService());
Console.WriteLine("Service is deployed..");
Console.ReadLine();
}
}
【问题讨论】: