public MessagePumpRetryCommandOnConnectionFailureTests() { _commandProcessor = new SpyCommandProcessor(); var channel = new FailingChannel { NumberOfRetries = 1 }; var mapper = new MyCommandMessageMapper(); _messagePump = new MessagePump <MyCommand>(_commandProcessor, mapper) { Channel = channel, TimeoutInMilliseconds = 500, RequeueCount = -1 }; var command = new MyCommand(); //two command, will be received when connection restored var message1 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_COMMAND), new MessageBody(JsonConvert.SerializeObject(command))); var message2 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_COMMAND), new MessageBody(JsonConvert.SerializeObject(command))); channel.Enqueue(message1); channel.Enqueue(message2); //end the pump var quitMessage = new Message(new MessageHeader(Guid.Empty, "", MessageType.MT_QUIT), new MessageBody("")); channel.Enqueue(quitMessage); }
public MessagePumpCommandProcessingExceptionTestsAsync() { _commandProcessor = new SpyRequeueCommandProcessor(); _channel = new FakeChannel(); var mapper = new MyCommandMessageMapper(); _messagePump = new MessagePumpAsync <MyCommand>(_commandProcessor, mapper) { Channel = _channel, TimeoutInMilliseconds = 5000, RequeueCount = _requeueCount }; var msg = mapper.MapToMessage(new MyCommand()); _channel.Enqueue(msg); }
public MessagePumpCommandRequeueCountThresholdTests() { _commandProcessor = new SpyRequeueCommandProcessor(); _channel = new FakeChannel(); var mapper = new MyCommandMessageMapper(); _messagePump = new MessagePumpBlocking <MyCommand>(_commandProcessor, mapper) { Channel = _channel, TimeoutInMilliseconds = 5000, RequeueCount = 3 }; _command = new MyCommand(); var message1 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_COMMAND), new MessageBody(JsonSerializer.Serialize(_command, JsonSerialisationOptions.Options))); var message2 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_COMMAND), new MessageBody(JsonSerializer.Serialize(_command, JsonSerialisationOptions.Options))); _channel.Enqueue(message1); _channel.Enqueue(message2); }
public void Establish() { _commandProcessor = new SpyRequeueCommandProcessor(); _channel = new FakeChannel(); var mapper = new MyCommandMessageMapper(); _messagePump = new MessagePump <MyCommand>(_commandProcessor, mapper) { Channel = _channel, TimeoutInMilliseconds = 5000, RequeueCount = 3 }; _command = new MyCommand(); var message1 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_COMMAND), new MessageBody(JsonConvert.SerializeObject(_command))); var message2 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_COMMAND), new MessageBody(JsonConvert.SerializeObject(_command))); _channel.Add(message1); _channel.Add(message2); }
public MessagePumpCommandRequeueTests() { _commandProcessor = new SpyRequeueCommandProcessor(); _channel = new FakeChannel(); var mapper = new MyCommandMessageMapper(); _messagePump = new MessagePump <MyCommand>(_commandProcessor, mapper) { Channel = _channel, TimeoutInMilliseconds = 5000, RequeueCount = -1 }; var message1 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_COMMAND), new MessageBody(JsonSerializer.Serialize(_command, JsonSerialisationOptions.Options))); var message2 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_COMMAND), new MessageBody(JsonSerializer.Serialize(_command, JsonSerialisationOptions.Options))); _channel.Enqueue(message1); _channel.Enqueue(message2); var quitMessage = new Message(new MessageHeader(Guid.Empty, "", MessageType.MT_QUIT), new MessageBody("")); _channel.Enqueue(quitMessage); }
public MessageDispatcherMultipleConnectionTests() { _eventChannel = new FakeChannel(); _commandChannel = new FakeChannel(); var commandProcessor = new SpyCommandProcessor(); var container = new ServiceCollection(); container.AddTransient <MyEventMessageMapper>(); container.AddTransient <MyCommandMessageMapper>(); var messageMapperRegistry = new MessageMapperRegistry(new ServiceProviderMapperFactory(container.BuildServiceProvider())); messageMapperRegistry.Register <MyEvent, MyEventMessageMapper>(); messageMapperRegistry.Register <MyCommand, MyCommandMessageMapper>(); var myEventConnection = new Subscription <MyEvent>(new SubscriptionName("test"), noOfPerformers: 1, timeoutInMilliseconds: 1000, channelFactory: new InMemoryChannelFactory(_eventChannel), channelName: new ChannelName("fakeChannel"), routingKey: new RoutingKey("fakekey")); var myCommandConnection = new Subscription <MyCommand>(new SubscriptionName("anothertest"), noOfPerformers: 1, timeoutInMilliseconds: 1000, channelFactory: new InMemoryChannelFactory(_commandChannel), channelName: new ChannelName("fakeChannel"), routingKey: new RoutingKey("fakekey")); _dispatcher = new Dispatcher(commandProcessor, messageMapperRegistry, new List <Subscription> { myEventConnection, myCommandConnection }); var @event = new MyEvent(); var eventMessage = new MyEventMessageMapper().MapToMessage(@event); _eventChannel.Enqueue(eventMessage); var command = new MyCommand(); var commandMessage = new MyCommandMessageMapper().MapToMessage(command); _commandChannel.Enqueue(commandMessage); _dispatcher.State.Should().Be(DispatcherState.DS_AWAITING); _dispatcher.Receive(); }
public void Establish() { _eventChannel = new FakeChannel(); _commandChannel = new FakeChannel(); _commandProcessor = new SpyCommandProcessor(); var container = new TinyIoCContainer(); container.Register <MyEventMessageMapper>(); container.Register <MyCommandMessageMapper>(); var messageMapperRegistry = new MessageMapperRegistry(new TinyIoCMessageMapperFactory(container)); messageMapperRegistry.Register <MyEvent, MyEventMessageMapper>(); messageMapperRegistry.Register <MyCommand, MyCommandMessageMapper>(); var myEventConnection = new Connection(name: new ConnectionName("test"), dataType: typeof(MyEvent), noOfPerformers: 1, timeoutInMilliseconds: 1000, channelFactory: new InMemoryChannelFactory(_eventChannel), channelName: new ChannelName("fakeChannel"), routingKey: "fakekey"); var myCommandConnection = new Connection(name: new ConnectionName("anothertest"), dataType: typeof(MyCommand), noOfPerformers: 1, timeoutInMilliseconds: 1000, channelFactory: new InMemoryChannelFactory(_commandChannel), channelName: new ChannelName("fakeChannel"), routingKey: "fakekey"); _dispatcher = new Dispatcher(_commandProcessor, messageMapperRegistry, new List <Connection> { myEventConnection, myCommandConnection }); var @event = new MyEvent(); var eventMessage = new MyEventMessageMapper().MapToMessage(@event); _eventChannel.Add(eventMessage); var command = new MyCommand(); var commandMessage = new MyCommandMessageMapper().MapToMessage(command); _commandChannel.Add(commandMessage); Assert.AreEqual(DispatcherState.DS_AWAITING, _dispatcher.State); _dispatcher.Receive(); }
public void Establish() { _commandProcessor = new SpyCommandProcessor(); _channel = new FailingChannel { NumberOfRetries = 4 }; var mapper = new MyCommandMessageMapper(); _messagePump = new MessagePump <MyCommand>(_commandProcessor, mapper) { Channel = _channel, TimeoutInMilliseconds = 5000, RequeueCount = -1 }; _command = new MyCommand(); var message1 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_COMMAND), new MessageBody(JsonConvert.SerializeObject(_command))); var message2 = new Message(new MessageHeader(Guid.NewGuid(), "MyTopic", MessageType.MT_COMMAND), new MessageBody(JsonConvert.SerializeObject(_command))); _channel.Add(message1); _channel.Add(message2); var quitMessage = new Message(new MessageHeader(Guid.Empty, "", MessageType.MT_QUIT), new MessageBody("")); _channel.Add(quitMessage); }