コード例 #1
0
        static void Main(string[] args)
        {
            var ChannelName         = "testing_event_channel";
            var ClientID            = "hello-world-sender";
            var KubeMQServerAddress = "localhost:50000";


            var channel = new KubeMQ.SDK.csharp.Events.Channel(new KubeMQ.SDK.csharp.Events.ChannelParameters
            {
                ChannelName   = ChannelName,
                ClientID      = ClientID,
                KubeMQAddress = KubeMQServerAddress
            });

            try
            {
                var result = channel.SendEvent(new KubeMQ.SDK.csharp.Events.Event()
                {
                    Body = KubeMQ.SDK.csharp.Tools.Converter.ToByteArray("hello kubemq - sending single event")
                });
                if (!result.Sent)
                {
                    Console.WriteLine($"Could not send single message:{result.Error}");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
コード例 #2
0
        private static void Sending_Events_Store_Single_Event_to_Store()
        {
            string ChannelName         = "testing_event_channel_store",
                   ClientID            = "hello-world-sender",
                   KubeMQServerAddress = "localhost:50000";

            var channel = new KubeMQ.SDK.csharp.Events.Channel(new KubeMQ.SDK.csharp.Events.ChannelParameters {
                ChannelName   = ChannelName,
                ClientID      = ClientID,
                KubeMQAddress = KubeMQServerAddress,
                Store         = true,
                AuthToken     = tempAuthToken
            });

            try {
                var result = channel.SendEvent(new KubeMQ.SDK.csharp.Events.Event()
                {
                    Body     = KubeMQ.SDK.csharp.Tools.Converter.ToByteArray("hello kubemq - sending multisubscribers event store"),
                    EventID  = $"event-Store-!",
                    Metadata = "some-metadata"
                });
                if (!result.Sent)
                {
                    Console.WriteLine($"Could not send multisubscribers message:{result.Error}");
                }
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
コード例 #3
0
        static async Task DequeueAndEventPub(MessageQueue receiveMQ, KubeMQ.SDK.csharp.Events.Channel channel)
        {
            try
            {
                /// KubeMQ msmq message handler
                receiveMQ.ReceiveCompleted += new ReceiveCompletedEventHandler((sender, eventArgs) =>
                {
                    eventArgs.Message.Formatter = new BinaryMessageFormatter();

                    System.IO.Stream stream = new System.IO.MemoryStream(eventArgs.Message.BodyStream);
                    StreamReader reader     = new StreamReader(stream);
                    string msgBody          = null;
                    try
                    {
                        msgBody = reader.ReadToEnd();
                        Console.WriteLine($"[Demo][DequeueAndEventPub] Msg received from RateMQ {sender}:{msgBody}");
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine($"[Demo][DequeueAndEventPub] Error parse msg from RateMQ {sender}:{ex.Message}");
                    }

                    if (msgBody != null)
                    {
                        try
                        {
                            channel.SendEvent(new KubeMQ.SDK.csharp.Events.Event
                            {
                                Body     = Encoding.UTF8.GetBytes(msgBody),
                                Metadata = "Rate message json encoded in UTF8",
                                EventID  = eventArgs.Message.Id
                            });
                            Console.WriteLine($"[Demo][DequeueAndEventPub] SendEvent {PubChannel}:{msgBody}");
                        }
                        catch (Exception ex)
                        {
                            Console.WriteLine($"[Demo][DequeueAndEventPub] Error parse msg from RateMQ {sender}:{ex.Message}");
                        }
                    }

                    receiveMQ.BeginReceive();
                });
                receiveMQ.BeginReceive();
            }
            catch (Exception ex)
            {
                Console.WriteLine($"[Demo][DequeueAndEventPub] Error register event error:{ex.Message}, please check the kubme_msmq_worker is listening on KUBEMQSCHANNEL:{Environment.GetEnvironmentVariable("KUBEMQSCHANNEL")}");
                //    await DequeueAndEventPub(receiveMQ, channel);
            }
        }
コード例 #4
0
        private static void Sending_Events_Stream_Events()
        {
            string ChannelName         = "testing_event_channel",
                   ClientID            = "hello-world-sender",
                   KubeMQServerAddress = "localhost:50000";
            var channel = new KubeMQ.SDK.csharp.Events.Channel(new KubeMQ.SDK.csharp.Events.ChannelParameters {
                ChannelName   = ChannelName,
                ClientID      = ClientID,
                KubeMQAddress = KubeMQServerAddress,
                AuthToken     = tempAuthToken
            });

            try {
                _ = channel.StreamEvent(new KubeMQ.SDK.csharp.Events.Event {
                    Body = KubeMQ.SDK.csharp.Tools.Converter.ToByteArray("hello kubemq - sending stream event")
                });
            } catch (Exception ex) {
                Console.WriteLine(ex.Message);
            }
        }
コード例 #5
0
        static void Main(string[] args)
        {
            Console.WriteLine("[Demo] Start demo msmq_receiver");
            //KubeMQ address is environment var "KubeMQServerAddress" GRPC port
            Console.WriteLine($"[Demo] KUBEMQ GRPC address:{Environment.GetEnvironmentVariable("KubeMQServerAddress")}");
            Console.WriteLine($"[Demo] ClientID:{ClientID}");
            Console.WriteLine($"[Demo] Publish rates channel PUBCHANNEL:{PubChannel}");
            Console.WriteLine($"[Demo] Command channel CMDChannel:{CMDChannel}");


            Console.WriteLine($"[Demo] KubeMQ MSMQ SDK message timeout KUBEMQTIMEOUT:{Environment.GetEnvironmentVariable("KUBEMQTIMEOUT")}");
            Console.WriteLine($"[Demo] KubeMQ MSMQ SDK message channel:{Environment.GetEnvironmentVariable("KUBEMQSCHANNEL")}");



            Console.WriteLine($"[Demo] init KubeMQ MessageQueue RateMQ:{RateMQ}");
            MessageQueue receiveMQ = new MessageQueue(RateMQ);

            Console.WriteLine($"[Demo] init KubeMQ MessageQueue CMDMQs:{CMDMQ}");
            MessageQueue sendMQ = new MessageQueue(CMDMQ);


            System.Threading.CancellationTokenSource source = new System.Threading.CancellationTokenSource();
            System.Threading.CancellationToken       token  = source.Token;



            /// Init a new sender channel on the KubeMQ to publish received rates

            KubeMQ.SDK.csharp.Events.Channel channel = new KubeMQ.SDK.csharp.Events.Channel(new KubeMQ.SDK.csharp.Events.ChannelParameters
            {
                ChannelName = PubChannel,
                ClientID    = ClientID,
                Store       = true
            });

            Console.WriteLine($"[Demo][DequeueAndEventPub] init KubeMQ publish persistence channel  PubChannel:{PubChannel}");

            //start a task for dequeue messages from MSMSQ using KubeMQ MSMQ SDK

            Task.Run((Func <Task>)(async() =>
            {
                //DequeueAndEventPub task implementing KubeMQ.MSMQ.SDK will request a Dequeue from KubeMQ MSMQ Worker publish the message to persistent KubeMQ channel.

                await DequeueAndEventPub(receiveMQ, channel);
            }), token);


            //start a task for enqueue MSMSQ messages using KubeMQ MSMQ SDK
            Task.Run((Func <Task>)(async() =>
            {
                await CommandHanleAndEnqueue(sendMQ);
            }), token);


            Console.WriteLine("[Demo] press Ctrl+c to stop");

            System.Threading.AutoResetEvent waitHandle = new System.Threading.AutoResetEvent(false);
            Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs e) =>
            {
                Console.WriteLine($"[Demo] finish Demo");
                source.Cancel();
                e.Cancel = true;
                waitHandle.Set();
            };

            waitHandle.WaitOne();
        }