private void Send(PublicationAddress destination, BinaryMessage message, Action <IBasicProperties> tuneMessage = null)
        {
            try
            {
                var properties = m_Model.CreateBasicProperties();

                properties.Headers      = new Dictionary <string, object>();
                properties.DeliveryMode = 2; //persistent
                foreach (var header in message.Headers)
                {
                    properties.Headers[header.Key] = header.Value;
                }
                if (message.Type != null)
                {
                    properties.Type = message.Type;
                }
                tuneMessage?.Invoke(properties);

                properties.Headers.Add("initialRoute", destination.ToString());
                lock (m_Model)
                {
                    m_Model.BasicPublish(destination.ExchangeName, destination.RoutingKey, true, properties, message.Bytes);
                    if (m_ConfirmedSending)
                    {
                        m_Model.WaitForConfirmsOrDie();
                    }
                }
            }
            catch (AlreadyClosedException e)
            {
                m_OnSendFail(this, destination, e);
                throw;
            }
        }
示例#2
0
        /// <summary>
        /// send 1 pkt to rabbitMQ
        /// </summary>
        /// <param name="messages"></param>
        /// <returns></returns>
        public string publishMsg(string messages)
        {
            logger.Info("Publish");
            string info = "";
            int    id   = 0;

            try
            {
                IBasicProperties basicProp = model.CreateBasicProperties();
                //set persistent true, meaning the msg can be recoverd
                basicProp.Persistent = true;
                messages             = messages + ";";
                byte[]             load = Encoding.UTF8.GetBytes(messages);
                PublicationAddress adr  = new PublicationAddress(ExchangeType.Topic, "to_oil_5", "values");
                model.BasicPublish(adr, basicProp, load);
                info = messages;
                string pub = adr.ToString();
                info += "ID: " + id + ": To " + pub;
                logger.Info("Message = " + info + "Published: " + pub);
                id++;
            }
            catch (NullReferenceException msg)
            {
                info = "" + msg;
                logger.Error(info);
            }
            //model.Dispose();
            con.Close();
            logger.Info("Closing connection");

            return("Published msg:" + info);
        }
        public void TestEmptyRoutingKey()
        {
            string             uriLike = "direct://exch/";
            PublicationAddress addr    = PublicationAddress.Parse(uriLike);

            Assert.AreEqual(ExchangeType.Direct, addr.ExchangeType);
            Assert.AreEqual("exch", addr.ExchangeName);
            Assert.AreEqual("", addr.RoutingKey);
            Assert.AreEqual(uriLike, addr.ToString());
        }
        public void TestParseOk()
        {
            string             uriLike = "fanout://name/key";
            PublicationAddress addr    = PublicationAddress.Parse(uriLike);

            Assert.AreEqual(ExchangeType.Fanout, addr.ExchangeType);
            Assert.AreEqual("name", addr.ExchangeName);
            Assert.AreEqual("key", addr.RoutingKey);
            Assert.AreEqual(uriLike, addr.ToString());
        }
        public void ShouldSerializeWithoutExchange()
        {
            //Arrange
            var addr = new PublicationAddress(null, null, "routing-key");

            //Act
            var str = addr.ToString();

            _output.WriteLine(str);

            //Assert
            Assert.Equal(":///routing-key", str);
        }
        public void ShouldSerializeWithExchange()
        {
            //Arrange
            var addr = new PublicationAddress("exchange-type", "exchange-name", "routing-key");

            //Act
            var str = addr.ToString();

            _output.WriteLine(str);

            //Assert
            Assert.Equal("exchange-type://exchange-name/routing-key", str);
        }
示例#7
0
        private void send(PublicationAddress destination, BinaryMessage message, Action <IBasicProperties> tuneMessage = null)
        {
            var properties = m_Model.CreateBasicProperties();

            properties.Headers      = new Hashtable();
            properties.DeliveryMode = 2;//persistent
            if (message.Type != null)
            {
                properties.Type = message.Type;
            }
            if (tuneMessage != null)
            {
                tuneMessage(properties);
            }

            properties.Headers.Add("initialRoute", destination.ToString());
            lock (m_Model)
                m_Model.BasicPublish(destination, properties, message.Bytes);
        }