Пример #1
0
        private static void Commands_Receiving_Commands_Requests()
        {
            string ChannelName         = "testing_command_channel",
                   ClientID            = "hello-world-subscriber",
                   KubeMQServerAddress = "localhost:50000";

            KubeMQ.SDK.csharp.CommandQuery.Responder responder = new KubeMQ.SDK.csharp.CommandQuery.Responder(KubeMQServerAddress, tempAuthToken);
            try {
                responder.SubscribeToRequests(new KubeMQ.SDK.csharp.Subscription.SubscribeRequest()
                {
                    Channel       = ChannelName,
                    SubscribeType = KubeMQ.SDK.csharp.Subscription.SubscribeType.Commands,
                    ClientID      = ClientID
                }, (commandReceive) => {
                    Console.WriteLine($"Command Received: Id:{commandReceive.RequestID} Channel:{commandReceive.Channel} Metadata:{commandReceive.Metadata} Body:{ KubeMQ.SDK.csharp.Tools.Converter.FromByteArray(commandReceive.Body)} ");
                    return(new KubeMQ.SDK.csharp.CommandQuery.Response(commandReceive)
                    {
                        Body = new byte[0],
                        CacheHit = false,
                        Error = "None",
                        ClientID = ClientID,
                        Executed = true,
                        Metadata = string.Empty,
                        Timestamp = DateTime.UtcNow,
                    });
                }, (errorHandler) => {
                    Console.WriteLine(errorHandler.Message);
                });
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
Пример #2
0
        static async Task CommandHanleAndEnqueue(MessageQueue sendMQ)
        {
            /// Init a new CommandQuery subscriber on the KubeMQ to receive commands


            KubeMQ.SDK.csharp.CommandQuery.Responder responder = new KubeMQ.SDK.csharp.CommandQuery.Responder();

            Console.WriteLine($"[Demo][CommandHanleAndEnqueue] init KubeMQ CommandQuery subscriber :{CMDChannel}");

            responder.SubscribeToRequests(new KubeMQ.SDK.csharp.Subscription.SubscribeRequest()
            {
                SubscribeType = KubeMQ.SDK.csharp.Subscription.SubscribeType.Commands,
                Channel       = CMDChannel,
                ClientID      = ClientID
            }, (KubeMQ.SDK.csharp.CommandQuery.RequestReceive request) =>
            {
                Console.WriteLine($"[Demo][CommandHanleAndEnqueue] CommandQuery RequestReceive :{request}");
                KubeMQ.SDK.csharp.CommandQuery.Response response;

                string strMsg = string.Empty;
                object body   = System.Text.Encoding.Default.GetString(request.Body);
                try
                {
                    sendMQ.Send(new Message
                    {
                        Body      = body,
                        Formatter = new ActiveXMessageFormatter()
                    });
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"[Demo][CommandHanleAndEnqueue] Error CommandQuery send response :{ex.Message}");
                    response = new KubeMQ.SDK.csharp.CommandQuery.Response(request)
                    {
                        Body      = Encoding.UTF8.GetBytes(ex.Message),
                        Error     = $"Received error from KubeMQ.MSMQ {ex.Message}",
                        ClientID  = ClientID,
                        Metadata  = "Bad",
                        Timestamp = DateTime.UtcNow
                    };
                    Console.WriteLine($"[Demo][CommandHanleAndEnqueue] CommandQuery send response :{response}");
                    return(response);
                }

                response = new KubeMQ.SDK.csharp.CommandQuery.Response(request)
                {
                    Body      = Encoding.UTF8.GetBytes("o.k"),
                    Error     = "None",
                    ClientID  = ClientID,
                    Executed  = true,
                    Metadata  = "OK",
                    Timestamp = DateTime.UtcNow,
                };
                Console.WriteLine($"[Demo][CommandHanleAndEnqueue] CommandQuery send response :{response}");
                return(response);
            });
        }
Пример #3
0
        static void Main(string[] args)
        {
            var ChannelName         = "testing_RPC_channel";
            var ClientID            = "hello-world-subscriber";
            var KubeMQServerAddress = "localhost:50000";



            KubeMQ.SDK.csharp.CommandQuery.Responder responder = new KubeMQ.SDK.csharp.CommandQuery.Responder(KubeMQServerAddress);
            try
            {
                responder.SubscribeToRequests(new KubeMQ.SDK.csharp.Subscription.SubscribeRequest()
                {
                    Channel       = ChannelName,
                    SubscribeType = KubeMQ.SDK.csharp.Subscription.SubscribeType.Commands,
                    ClientID      = ClientID
                }, (commandReceive) => {
                    Console.WriteLine($"Command Received: Id:{commandReceive.RequestID} Channel:{commandReceive.Channel} Metadata:{commandReceive.Metadata} Body:{ KubeMQ.SDK.csharp.Tools.Converter.FromByteArray(commandReceive.Body)} ");
                    return(new KubeMQ.SDK.csharp.CommandQuery.Response(commandReceive)
                    {
                        Body = new byte[0],
                        CacheHit = false,
                        Error = "None",
                        ClientID = ClientID,
                        Executed = true,
                        Metadata = string.Empty,
                        Timestamp = DateTime.UtcNow,
                    });
                }, (errorHandler) =>
                {
                    Console.WriteLine(errorHandler.Message);
                });
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.WriteLine("press any key to close RPC_Subscribe_to_a_Channel");
            Console.ReadLine();
        }