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); } }
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); } }
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); } }
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); } }
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(); }