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