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​
- Added NonClustered and Clustered options to
[Index]
attribute
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:
IMessageQueueClient
now exposes high-levelIMessage
API's instead of rawbyte[]
- The
IMessage.Error
property is now aResponseStatus
type (same used in Web Services) - Ack / Nak APIs were also added to
IMessageQueueClient
- All MQ Brokers now have a default
RetryCount=1
ServiceStack.Text​
- UrlEncode extension method now encodes spaces with
+
instead of%20
to match defaultHttpUtility.UrlEncode
behavior
OrmLite​
- MySql and Sqlite providers now treat GUID's as
char(36)