public static void ShouldContain(this IInboundTransport transport, IMessageSerializer serializer, Type messageType) { var future = new Future <bool>(); transport.Receive(context => { context.ShouldNotBeNull(); context.ShouldBeAnInstanceOf <IReceiveContext>(); serializer.Deserialize(context); if (context.IsContextAvailable(messageType)) { if (!future.IsCompleted) { future.Complete(true); } } return(null); }, TimeSpan.FromSeconds(8)); future.IsCompleted.ShouldBeTrue(transport.Address + " should contain a message of type " + messageType.ToShortTypeName()); }
public bool Execute() { Uri uri = _uriString.ToUri("The from URI was invalid"); IInboundTransport fromTransport = Program.Transports.GetInboundTransport(uri); var text = new TextBlock() .BeginBlock("Peek URI: " + uri, ""); int peekCount = 0; fromTransport.Receive(receiveContext => { if (peekCount >= _count) { return(null); } var body = Encoding.UTF8.GetString(receiveContext.BodyStream.ReadToEnd()); text.BeginBlock("MessageId: " + receiveContext.MessageId ?? "", peekCount) .Body(body) .EndBlock(); peekCount++; return(null); }, 5.Seconds()); _log.Info(text.ToString()); return(true); }
public override bool Execute() { _log.InfoFormat("Moving messages from '{0}' to '{1}'", _fromUri, _toUri); IInboundTransport fromTransport = GetInboundTransport(_fromUri); IOutboundTransport toTransport = GetOutboundTransport(_toUri); int moveCount = 0; for (int i = 0; i < _count; i++) { fromTransport.Receive(receiveContext => { return(context => { var moveContext = new MoveMessageSendContext(context); toTransport.Send(moveContext); _log.DebugFormat("Moving Message Id: {0}", context.MessageId); moveCount++; }); }, 5.Seconds()); } _log.InfoFormat("{0} message{1} moved from {2} to {3}", moveCount, moveCount == 1 ? "" : "s", _fromUri, _toUri); return(true); }
public static void ShouldContain <TMessage>(this IInboundTransport transport, IMessageSerializer serializer) where TMessage : class { var future = new Future <TMessage>(); transport.Receive(context => { context.ShouldNotBeNull(); context.ShouldBeAnInstanceOf <IReceiveContext>(); serializer.Deserialize(context); IConsumeContext <TMessage> messageContext; if (context.TryGetContext(out messageContext)) { if (!future.IsCompleted) { future.Complete(messageContext.Message); } } return(null); }, TimeSpan.FromSeconds(8)); future.IsCompleted.ShouldBeTrue(transport.Address + " should contain a message of type " + typeof(TMessage).Name); }
public bool Execute() { Uri uri = _uriString.ToUri("The URI was invalid"); IInboundTransport inboundTransport = Program.Transports.GetInboundTransport(uri); IOutboundTransport outboundTransport = Program.Transports.GetOutboundTransport(uri); ITextBlock text = new TextBlock() .BeginBlock("Requeue messages to " + uri, ""); int requeueCount = 0; for (int i = 0; i < _count; i++) { inboundTransport.Receive(receiveContext => { return(context => { var moveContext = new MoveMessageSendContext(context); outboundTransport.Send(moveContext); text.BodyFormat("Message-Id: {0}", context.MessageId); requeueCount++; }); }, 5.Seconds()); } _log.Info(text); _log.InfoFormat("{0} message{1} requeued to {2}", requeueCount, requeueCount == 1 ? "" : "s", uri); return(true); }
public bool Execute() { Uri fromUri = _fromUriString.ToUri("The from URI was invalid"); Uri toUri = _toUriString.ToUri("The to URI was invalid"); IInboundTransport fromTransport = Program.Transports.GetTransport(fromUri); IOutboundTransport toTransport = Program.Transports.GetTransport(toUri); ITextBlock text = new TextBlock() .BeginBlock("Move messages from " + fromUri + " to " + toUri, ""); int moveCount = 0; for (int i = 0; i < _count; i++) { fromTransport.Receive(receiveContext => { return(context => { var moveContext = new MoveMessageSendContext(context); toTransport.Send(moveContext); text.BodyFormat("Message-Id: {0}", context.MessageId); moveCount++; }); }, TimeSpan.Zero); } _log.Info(text); _log.InfoFormat("{0} message{1} moved from {2} to {3}", moveCount, moveCount == 1 ? "" : "s", fromUri, toUri); return(true); }
public void receive_is_called() { handler.Verify( x => x.AddBinding(It.IsAny <ConnectionBinding <AzureServiceBusConnection> >()), Times.Never(), "hasn't received yet"); subject.Receive(ctx => c => { }, 1.Seconds()); }
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()); }
/// <summary> /// May throw a timeout exception if a message with the given id cannot be found. /// </summary> /// <param name="messageId"></param> public void ReturnMessageToSourceQueue(string messageId, IReceiveContext context) { try { var query = context.DestinationAddress.Query; var errorQueue = context.DestinationAddress.OriginalString.Replace(query, "") + "_error"; Uri fromUri = new Uri(errorQueue); Uri toUri = context.DestinationAddress; IInboundTransport fromTransport = Transports.GetInboundTransport(fromUri); IOutboundTransport toTransport = Transports.GetOutboundTransport(toUri); fromTransport.Receive(receiveContext => { if (receiveContext.MessageId == messageId) { return(ctx => { var moveContext = new MoveMessageSendContext(ctx); toTransport.Send(moveContext); }); } return(null); }, 5.Seconds()); Console.WriteLine("Success."); } catch (MessageQueueException ex) { if (ex.MessageQueueErrorCode == MessageQueueErrorCode.IOTimeout) { Console.WriteLine(NoMessageFoundErrorFormat, context.Id); foreach (var m in queue.GetAllMessages()) { var tm = TransportMessageHeaders.Create(m.Extension); if (tm[""] != null) { //if (messageId != tm[""]) // continue; Console.WriteLine("Found message - going to return to queue."); using (var tx = new TransactionScope()) { using (var q = new MessageQueue(new EndpointAddress(tm[""]).Path)) q.Send(m, MessageQueueTransactionType.Automatic); queue.ReceiveByLookupId(MessageLookupAction.Current, m.LookupId, MessageQueueTransactionType.Automatic); tx.Complete(); } Console.WriteLine("Success."); //scope.Complete(); return; } } } } //} }