Exemplo n.º 1
0
        void IMessageHandler.Handle(Message message)
        {
            var bus = _busItem.Item;

            AppSession.Using(() =>
            {
                try
                {
                    var content = message.Content;
                    var method  = content.GetValue <string>("method");
                    var arg     = content.GetObject("arg");

                    var result = DTObject.CreateReusable();
                    Process(method, arg, result);

                    var routingKey = message.Properties.ReplyTo; //将客户端的临时队列名称作为路由key
                    bus.Publish(string.Empty, routingKey, result, (replyProps) =>
                    {
                        replyProps.CorrelationId = message.Properties.CorrelationId;
                    });
                }
                catch (Exception ex)
                {
                    LogWrapper.Default.Fatal(ex);

                    var arg = new RPCEvents.ServerErrorArgs(ex);
                    RPCEvents.RaiseServerError(this, arg);
                }
                finally
                {
                    message.Success();
                }
            }, true);
        }
Exemplo n.º 2
0
 private static void OnServerError(object sender, RPCEvents.ServerErrorArgs arg)
 {
     Console.WriteLine(arg.Exception.GetCompleteMessage());
 }