標籤:
為了保持程式的高效,建議使用ProtoBuf.
Google Protocol Buffer( 簡稱 Protobuf) 是 Google 公司內部的混合語言資料標準,目前已經正在使用的有超過 48,162 種報文格式定義和超過 12,183 個 .proto 檔案。他們用於 RPC 系統和持續資料存放區系統。
Protocol Buffers 是一種輕便高效的結構化資料存放區格式,可以用於結構化資料序列化,或者說序列化。
Net中使用也很簡單,在NuGet 擷取,使用特性標記即可,有點類似wcf中的契約.
[ProtoContract] public class TestQuene { [ProtoMember(1)] public int Id { get; set; }
簡單的隊列隊列入隊與出隊測試,效果還不錯.
for (int i = 0; i < 100; i++) { MemoryStream xmlw = new MemoryStream(); TestQuene TempTest = new TestQuene() { Id = i, data = new List<string>(new string[] { "1", "2", "3" }) }; Serializer.Serialize<TestQuene>(xmlw, TempTest); message = Convert.ToBase64String(xmlw.ToArray()); Console.WriteLine("EnqueueItemOnList=" + message); redis.EnqueueItemOnList("MessageQuene", message); }
ThreadPool.UnsafeQueueUserWorkItem(o => { while (true) { try { MemoryStream ms = new MemoryStream(Convert.FromBase64String(redis.BlockingPopItemFromList("MessageQuene", TimeSpan.FromHours(2)))); Console.WriteLine("while=" + Serializer.Deserialize<TestQuene>(ms)); } catch (Exception ex) { Debug.WriteLine(ex.ToString()); } } }, null);
Redis 簡易訊息佇列