void SendMessage() { var context = new SendContext <DeleteMessage>(new DeleteMessage()); context.SetBodyWriter(stream => _serializer.Serialize(stream, context)); _transport.Send(context); }
public void TransportSendAndReceive() { using (var management = new RabbitMqEndpointManagement(_queue)) { management.BindQueue(_queue.Name, _exchange.Name, ExchangeType.Fanout, "", null); } IOutboundTransport t = _factory.BuildOutbound(new TransportSettings(_exchange)); var context = new SendContext <string>("dru"); context.SetBodyWriter(stream => { byte[] buffer = Encoding.UTF8.GetBytes(context.Message); stream.Write(buffer, 0, buffer.Length); }); t.Send(context); IInboundTransport i = _factory.BuildInbound(new TransportSettings(_queue)); i.Receive(s => { return(ss => { string name; using (var stream = new MemoryStream()) { ss.CopyBodyTo(stream); name = Encoding.UTF8.GetString(stream.ToArray()); } Assert.AreEqual("dru", name); Console.WriteLine(name); }); }, 1.Minutes()); }
public static void QueueMessage <T>(T message) where T : class { string localQueueName = new Uri(QueueName).GetLocalName(); ISendContext <T> sc = new SendContext <T>(message); var messageEnvelope = Envelope.Create(sc); messageEnvelope.DestinationAddress = QueueName; /* using (var mq = new System.Messaging.MessageQueue(localQueueName)) * { * mq.Send(messageEnvelope); * * } */ var msmqMessage = new Message(); try { if (!string.IsNullOrEmpty(sc.MessageType)) { msmqMessage.Label = sc.MessageType.Length > 250 ? sc.MessageType.Substring(0, 250) : sc.MessageType; } msmqMessage.Recoverable = false; msmqMessage.UseDeadLetterQueue = true; if (sc.ExpirationTime.HasValue) { DateTime dateTime = sc.ExpirationTime.Value; msmqMessage.TimeToBeReceived = dateTime.Kind == DateTimeKind.Utc ? dateTime - SystemUtil.UtcNow : dateTime - SystemUtil.Now; } var serializer = new XmlMessageSerializer(); // (Action<Stream>)(stream => serializer.Serialize<T>(stream, sc)) sc.SetBodyWriter(stream => serializer.Serialize(stream, sc)); sc.SerializeTo(msmqMessage.BodyStream); // msmqMessage.Body = messageEnvelope; var transportMessageHeaders = new TransportMessageHeaders(); if (!string.IsNullOrEmpty(sc.ContentType)) { transportMessageHeaders.Add("Content-Type", sc.ContentType); } if (!string.IsNullOrEmpty(sc.OriginalMessageId)) { transportMessageHeaders.Add("Original-Message-Id", sc.OriginalMessageId); } msmqMessage.Extension = transportMessageHeaders.GetBytes(); using (var mq = new MessageQueue(localQueueName)) { mq.Send(msmqMessage, MessageQueueTransactionType.None); } } finally { msmqMessage.Dispose(); } }
public void TransportSendAndReceive() { using (var management = new RabbitMqEndpointManagement(_queue)) { management.BindQueue(_queue.Name, _exchange.Name, ExchangeType.Fanout, "", null); } IOutboundTransport t = _factory.BuildOutbound(new TransportSettings(_exchange)); var context = new SendContext<string>("dru"); context.SetBodyWriter(stream => { byte[] buffer = Encoding.UTF8.GetBytes(context.Message); stream.Write(buffer, 0, buffer.Length); }); t.Send(context); IInboundTransport i = _factory.BuildInbound(new TransportSettings(_queue)); i.Receive(s => { return ss => { string name; using (var stream = new MemoryStream()) { ss.CopyBodyTo(stream); name = Encoding.UTF8.GetString(stream.ToArray()); } Assert.AreEqual("dru", name); Console.WriteLine(name); }; }, 1.Minutes()); }