Exemple #1
0
        static void Main(string[] args)
        {
            Console.WriteLine("[{0}] Start Application", DateTime.Now.ToString("hh.mm.ss.ffffff"));

            MessageFactory messageFactory = CommonConnection.Load().Get <MessageFactory>();

            /** connection example **/

            var channel = "secret_channel"; //channel for rabbitmq or topic for kafka

            //subscribe message rabbit
            ConnectionConfig connection            = new ConnectionConfig(MessageBrokerEnum.RabbitMQ, "127.0.0.1", null);
            IMessageBroker   messageBrokerRabbitMq = messageFactory.Create(connection);

            ((ICommonConsumer)messageBrokerRabbitMq.GetConsumer()).OnMessageReceivedEventHandler += OnMessageReceivedEventHandler;

            //subscribe message redis
            ConnectionConfig connectionRedis    = new ConnectionConfig(MessageBrokerEnum.Redis, "127.0.0.1", 6379);
            IMessageBroker   messageBrokerRedis = messageFactory.Create(connectionRedis);

            ((ICommonConsumer)messageBrokerRedis.GetConsumer()).OnMessageReceivedEventHandler += OnMessageReceivedEventHandler;

            //subscribe message kafka
            ConnectionConfig connectionKafka    = new ConnectionConfig(MessageBrokerEnum.Kafka, "127.0.0.1", 9092);
            IMessageBroker   messageBrokerKafka = messageFactory.Create(connectionKafka);

            ((ICommonConsumer)messageBrokerKafka.GetConsumer()).OnMessageReceivedEventHandler += OnMessageReceivedEventHandler;

            messageBrokerKafka.Start(channel);
            messageBrokerRedis.Start(channel);
            messageBrokerRabbitMq.Start(channel);

            /** end of connection example **/


            //publish Message
            RequestMessageData <SomeMessage> objectToSend = new RequestMessageData <SomeMessage>(new SomeMessage(1, "message dikirim", DateTime.Now, new List <string> {
                "ratna", "santi"
            }));                                                                                                                                                                            //some class or object
            bool isPublish = messageBrokerRedis.PublishRequestMessage(channel, objectToSend);

            isPublish &= messageBrokerKafka.PublishRequestMessage <SomeMessage>(channel, objectToSend); //could adding additional key for kafka on third parameter (optional)
            isPublish &= messageBrokerRabbitMq.PublishRequestMessage(channel, objectToSend);

            // example of publish bulk
            //publishBulk(messageBrokerRabbitMq, channel, objectToSend);
            //publishBulk(messageBrokerRedis, channel, objectToSend);
            //publishBulk(messageBrokerKafka, channel, objectToSend);

            Console.WriteLine("after task start");

            Thread.Sleep(10000);
            Console.WriteLine("cancel start");

            messageBrokerRabbitMq.Unsubscribe(channel);
            messageBrokerKafka.Unsubscribe(channel);
            messageBrokerRedis.Unsubscribe(channel);

            Console.WriteLine("cancel finished");
        }
Exemple #2
0
        public void Connection_CommonMessageObjectCompleteTest()
        {
            var content = new SomeMessage(1, "varA");

            var message = new RequestMessageData <SomeMessage>(
                _data: content,
                _publishHostUrl: "publishResponseHostUrlTest",
                _publishHostPort: 123,
                _publishChannel: "publishResponseChannelTest",
                _publishType: MessageBrokerEnum.Redis,
                _cacheHostUrl: "publishResponseCacheHostUrlTest",
                _cacheHostPort: 456,
                _cacheKey: "publishResponseCacheKeyTest",
                _cacheType: CacheTypeEnum.MemoryCache,
                _cacheTimeoutMiliseconds: 10,
                _sessionIDGateway: "sessionIdGatewayTest",
                _userIDGateway: "userIDGatewayTest"
                );

            Assert.IsNotNull(message);
            Assert.IsNotNull(message.PublishChannel);
            Assert.IsNotNull(message.CacheKey);
            Assert.AreEqual(message.Data, content);
            Assert.IsTrue(message.Data is SomeMessage);
        }
Exemple #3
0
        public void Connection_CommonMessageDefaultTest()
        {
            var message = new RequestMessageData <string>("varA");

            Assert.IsNotNull(message);
            Assert.IsNull(message.PublishChannel);
            Assert.IsNull(message.CacheKey);
            Assert.AreEqual(message.Data, "varA");
            Assert.IsTrue(message.Data is String);
        }
Exemple #4
0
        public void PublishNullTest()
        {
            var producer = _mockPublisher.Object;

            string message = null;
            string channel = "test_channel";

            RequestMessageData <string> cm = new RequestMessageData <string>(message);
            var isSend = producer.Publish(channel, cm);

            Assert.IsFalse(isSend);
        }
Exemple #5
0
        public void Connection_CommonMessageObjectTest()
        {
            var content = new SomeMessage(1, "varA");

            var message = new RequestMessageData <SomeMessage>(content);

            Assert.IsNotNull(message);
            Assert.IsNull(message.PublishChannel);
            Assert.IsNull(message.CacheKey);
            Assert.AreEqual(message.Data, content);
            Assert.IsTrue(message.Data is SomeMessage);
        }
        public void RequestMessageDataJsonConvertTest()
        {
            var objectToSend = new RequestMessageData <SomeMessage>(new SomeMessage(1, "dua", DateTime.Now, new List <string> {
                "ratna", "santi"
            }));                                                                                                                                    //some class or object
            var serializeObject = JsonConvert.SerializeObject(objectToSend);

            var deserializeObject = JsonConvert.DeserializeObject <RequestMessageData <SomeMessage> >(serializeObject);

            Assert.AreEqual(objectToSend.Data.Number, deserializeObject.Data.Number);
            Assert.AreEqual(objectToSend.Data.Message, deserializeObject.Data.Message);
            DateTimeAssert.AreEqual(objectToSend.Data.StartDate, deserializeObject.Data.StartDate, TimeSpan.FromMinutes(1));
            Assert.AreEqual(objectToSend.Data.MemberList.Count, deserializeObject.Data.MemberList.Count);
            Assert.IsTrue(deserializeObject.Data.MemberList.Contains("ratna"));
            Assert.IsTrue(deserializeObject.Data.MemberList.Contains("santi"));
        }
Exemple #7
0
        public void Connection_CommonMessageDefaultCompleteTest()
        {
            var message = new RequestMessageData <string>(
                _data: "versionTest.serviceNameTest.channelTest",
                _publishHostUrl: "publishResponseHostUrlTest",
                _publishHostPort: 123,
                _publishChannel: "publishResponseChannelTest",
                _publishType: MessageBrokerEnum.Redis,
                _cacheHostUrl: "publishResponseCacheHostUrlTest",
                _cacheHostPort: 456,
                _cacheKey: "publishResponseCacheKeyTest",
                _cacheType: CacheTypeEnum.MemoryCache,
                _cacheTimeoutMiliseconds: 10,
                _sessionIDGateway: "sessionIdGatewayTest",
                _userIDGateway: "userIDGatewayTest"
                );

            Assert.IsNotNull(message);
            Assert.IsNotNull(message.PublishChannel);
            Assert.IsNotNull(message.CacheKey);
            Assert.AreEqual(message.Data, "versionTest.serviceNameTest.channelTest");
            Assert.IsTrue(message.Data is String);
        }
Exemple #8
0
        private static void publishBulkSimple(IMessageBroker messageBroker, string channel, RequestMessageData <string> objectToSend)
        {
            var resultDiff = new List <double>();

            for (int i = 0; i < 40; i++)
            {
                var start = DateTime.Now;
                messageBroker.PublishRequestMessage <string>(channel, objectToSend);
                var end      = DateTime.Now;
                var diffTime = (end - start).TotalMilliseconds;
                resultDiff.Add(diffTime);
            }
            Console.WriteLine(resultDiff);
        }