c# - PCF 和服务栈

标签 c# servicestack cloud-foundry

我们公司正在使用 Pivotal Cloud Foundry,目前我们正在为我们的端点使用 WebApi。

我过去使用过 serviceStack(虽然已经是几年前的事了),想知道是否有人在将它与 PCF 一起使用。 我们还将在 PCF 中使用 Redis 和 RabbitMQ 服务,我想它们可以注入(inject)到 ServiceStack 中。

请告诉我您的经历。

最佳答案

我没有使用 Pivotal Cloud Foundry,但我使用的是 ServiceStack 和 Redis(缓存),它的效果非常好。

在您的 AppHost.Configure 方法中,您只需像这样注册 Redis

// ...
// Can be memory or redis
if (AppSettings.Get("CacheClient", "memory") == "redis")
{
    Container.Register<IRedisClientsManager>(c => new PooledRedisClientManager("localhost:6379"));
    Container.Register(c => c.Resolve<IRedisClientsManager>().GetCacheClient());
}
else
    Container.Register<ICacheClient>(new MemoryCacheClient());
// ...

然后你可以像这样设置/检索缓存值

public static List<SupplierDeliveryState> Get(this IDbConnection db, AllSupplierDeliveryStates request)
{
    var cache = HostContext.TryResolve<ICacheClient>();
    var cacheKey = UrnId.Create<AllSupplierDeliveryStates>(CultureInfo.CurrentUICulture.Name);
    lock (typeof(AllSupplierDeliveryStates))
    {
        var supplierDeliveryStates = 
cache.Get<List<SupplierDeliveryState>>(cacheKey);
        if (supplierDeliveryStates == null)
        {
            supplierDeliveryStates = db.Select<SupplierDeliveryState>().OrderBy(p => p.Label).ToList();
            cache.Set(cacheKey, supplierDeliveryStates, Settings.DefaultCacheDuration);
        }
        return supplierDeliveryStates;
    }
}

我对使用 RabbitMQ 很感兴趣,但目前我没有花时间使用它。我有兴趣使用它来执行异步操作,例如电子邮件发送、用户通知发送或标签打印。

关于c# - PCF 和服务栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48554399/

相关文章:

c# - 在哪里使用私有(private)类(class)?

c# - 如何从服务堆栈插件添加新端点?

c# - ServiceStack - 如何在 POST 方法中强制上传文件

ibm-cloud - Cloud Foundry 从 URL 推送

java - 端口绑定(bind) - 12 Factor App

c# - ThreadAbortException 有什么特别之处?

java - C++ 中的 "object"数据类型?

c# - 处理多线程应用程序中的静态构造函数异常

.net - ServiceStack 遇到异常 : The underlying connection was closed: The message length limit was exceeded

ruby - Bosh stemcell Ubuntu Ruby,与/var/vcap/bosh/lib/ruby 冲突(LoadError)