NBear.MQ 是 NBear Framework 新增的分散式訊息佇列模組,秉承「易用、零配置」特性,大幅提升基於訊息佇列分散式系統的開發效率。本文以 TestServiceMQ 範例示範基本開發流程。
使用內建 MemoryServiceMQ 幾乎零代碼,僅需發布為 Remoting 服務:
class Program {
static void Main(string[] args) {
MemoryServiceMQ mq = new MemoryServiceMQ();
mq.OnLog = new LogHandler(Console.WriteLine);
RemotingServiceHelper rh = new RemotingServiceHelper(RemotingChannelType.TCP, "127.0.0.1", 8000, new LogHandler(Console.WriteLine));
rh.PublishServiceInstance("MMQ", typeof(IServiceMQ), mq, System.Runtime.Remoting.WellKnownObjectMode.Singleton);
while (Console.ReadLine() != "q") { }
}
}
關鍵:第 8-9 行發布 mq 實例至 tcp://127.0.0.1:8000/MMQ。若需對接 MSMQ/ActiveMQ,自行實作 IServiceMQ 介面替換即可。
定義兩個服務繼承 BaseAutoService:
public class MathService : BaseAutoService {
public MathService(IServiceMQ mq) : base("demo.math", mq) { }
protected override ResponseMessage Run(RequestMessage msg) {
// 解析參數、計算、構建 ResponseMessage 回傳
}
}
public class HelloWorldService : BaseAutoService {
public HelloWorldService(IServiceMQ mq) : base("demo.helloworld", mq) { }
protected override ResponseMessage Run(RequestMessage msg) {
// 回傳 "hello world" 文字與資料
}
}
服務啟動後自動註冊至 MQ,客戶端可透過服務名稱調用。完整代碼見範例專案。