Edit on GitHub

v4.0.09 Release Notes

Rabbit MQ Support

The biggest feature in this release is ServiceStack’s new support for hosting Services via a Rabbit MQ Server, expanding on our existing Redis MQ and In Memory messaging options with a new durable MQ option in the robust and popular Rabbit MQ. ServiceStack’s Rabbit MQ support is available on NuGet with:

PM> Install-Package ServiceStack.RabbitMq

A new Rabbit MQ on Windows installation and setup guide was published containing code samples for working with Rabbit MQ from C#/.NET.

Configurable Metadata Pages

New customizable filters were added to the MetadataFeature plugin to allow customization of the Master and detail metadata pages before they’re rendered. E.g. you can reverse the order of operation names with:

var metadata = (MetadataFeature)Plugins.First(x => x is MetadataFeature);
metadata.IndexPageFilter = page => {
    page.OperationNames.Sort((x,y) => y.CompareTo(x));
};

OrmLite new runtime typed API

The IUntypedApi interface is useful for when you only have access to a late-bound object runtime type which is accessible via db.CreateTypedApi, e.g:

public class BaseClass
{
    public int Id { get; set; }
}

public class Target : BaseClass
{
    public string Name { get; set; }
}

var row = (BaseClass)new Target { Id = 1, Name = "Foo" };

var useType = row.GetType();
var typedApi = db.CreateTypedApi(useType);

db.DropAndCreateTables(useType);

typedApi.Save(row);

var typedRow = db.SingleById<Target>(1);
typedRow.Name //= Foo

var updateRow = (BaseClass)new Target { Id = 1, Name = "Bar" };

typedApi.Update(updateRow);

typedRow = db.SingleById<Target>(1);
typedRow.Name //= Bar

typedApi.Delete(typedRow, new { Id = 1 });

typedRow = db.SingleById<Target>(1); //= null

OrmLite Create Table Support

Breaking changes

Messaging

In order to support Rabbit MQ Server some changes were made to ServiceStack’s Messaging API to support all MQ options, namely:

ServiceStack.Text

OrmLite