Publish() public static method

public static Publish ( object message ) : void
message object
return void
コード例 #1
0
ファイル: BusTests.cs プロジェクト: nordbergm/NSimpleBus
        public void CanPublish()
        {
            var mockRepository = new MockRepository();
            var config = mockRepository.DynamicMock<IBrokerConfiguration>();
            var connFactory = mockRepository.DynamicMock<IBrokerConnectionFactory>();
            var conn = mockRepository.DynamicMock<IBrokerConnection>();
            var consumer = mockRepository.DynamicMock<IRegisteredConsumer>();
            var message = new TestMessage();

            using (mockRepository.Record())
            {
                SetupResult.For(consumer.MessageType).Return(typeof(TestMessage));
                SetupResult.For(connFactory.CreateConnection()).Return(conn);
                SetupResult.For(config.Exchange).Return("ex");
                SetupResult.For(config.ConnectionFactory).Return(connFactory);
                SetupResult.For(config.RegisteredConsumers).Return(new Dictionary<Type, IList<IRegisteredConsumer>> { { typeof(TestMessage), new List<IRegisteredConsumer> { consumer } } }); ;
                SetupResult.For(conn.IsOpen).Return(true);

                Expect.Call(() => conn.Publish<TestMessage>(null))
                    .IgnoreArguments()
                    .WhenCalled(mi =>
                            {
                                var envelope = mi.Arguments[0];

                                Assert.IsAssignableFrom(typeof(IMessageEnvelope<TestMessage>), envelope);
                                Assert.Same(message, ((IMessageEnvelope<TestMessage>)envelope).Message);
                            });
            }

            using (mockRepository.Playback())
            {
                var bus = new Bus(config);
                bus.Publish(message);
            }
        }
コード例 #2
0
ファイル: BusTests.cs プロジェクト: adbrowne/Samples
        public void EventTest()
        {
            var bus = new Bus(null, new HandlerRegistry());
            int called = 0;
            bus.Subscribe<WidgetCreatedEvent>((x) => called++);

            bus.Subscribe<WidgetCreatedEvent>((x) => called++);

            bus.Publish(new WidgetCreatedEvent());
            Assert.AreEqual(2, called);
        }
コード例 #3
0
    public void When_testing_something()
    {
        var bus1 = new Bus();

            bus1.Subscribe("first", x => _output.WriteLine("Bus1 => ({0}) => {1}", "first", x.Json));
            bus1.Subscribe("second", x => _output.WriteLine("Bus1 => ({0}) => {1}", "second", x.Json));

            var bus2 = new Bus();

            bus2.Subscribe("first", x => _output.WriteLine("Bus2 => ({0}) => {1}", "first", x.Json));
            bus2.Subscribe("second", x => _output.WriteLine("Bus2 => ({0}) => {1}", "second", x.Json));

            var exchange = new Exchange();
            exchange.AddBus(bus1);
            exchange.AddBus(bus2);

            bus1.Publish("first", new Message { Json = "a message"});
    }
コード例 #4
0
ファイル: BusTests.cs プロジェクト: nordbergm/NSimpleBus
        public void CreatesNewConnectionIfConnectionClosedWhenPublishing()
        {
            var mockRepository = new MockRepository();
            var config = mockRepository.DynamicMock<IBrokerConfiguration>();
            var connFactory = mockRepository.DynamicMock<IBrokerConnectionFactory>();
            var conn = mockRepository.DynamicMock<IBrokerConnection>();
            var consumer = mockRepository.DynamicMock<IRegisteredConsumer>();
            var message = new TestMessage();

            using (mockRepository.Record())
            {
                SetupResult.For(consumer.MessageType).Return(typeof (TestMessage));
                SetupResult.For(config.Exchange).Return("ex");
                SetupResult.For(config.ConnectionFactory).Return(connFactory);
                SetupResult.For(config.RegisteredConsumers).Return(new Dictionary<Type, IList<IRegisteredConsumer>> { { typeof(TestMessage), new List<IRegisteredConsumer> { consumer } } }); ;
                SetupResult.For(conn.IsOpen).Return(false);

                Expect.Call(connFactory.CreateConnection()).Repeat.Times(4).Return(conn);
            }

            using (mockRepository.Playback())
            {
                var bus = new Bus(config);
                bus.Publish(message);
                bus.Publish(message);
            }
        }
コード例 #5
0
ファイル: HealthSaga.cs プロジェクト: bmavity/MassTransit
 private void NotifyEndpointIsDown()
 {
     Bus.Publish(new EndpointIsDown(CorrelationId, ControlUri, DataUri, HeartbeatIntervalInSeconds, LastHeartbeat, Down.Name));
 }
コード例 #6
0
ファイル: Publish_Specs.cs プロジェクト: sztepen/MassTransit
        public async Task Should_succeed()
        {
            await Bus.Publish(new PingMessage());

            await _handler;
        }
コード例 #7
0
        public async Task Should_receive_message()
        {
            await Bus.Publish(new PingMessage());

            await _handled;
        }
コード例 #8
0
        public async Task Should_be_received_properly()
        {
            await Bus.Publish <PingMessage>(new {});

            ConsumeContext <PingMessage> context = await _received;
        }
コード例 #9
0
        public void Handle(ReplicationMessage.DataChunkBulk message)
        {
            Interlocked.Decrement(ref FlushMessagesInQueue);
            try
            {
                if (_subscriptionId != message.SubscriptionId)
                {
                    return;
                }
                if (_activeChunk != null)
                {
                    ReplicationFail(
                        "Data chunk bulk received, but we have active chunk for receiving raw chunk bulks.",
                        "Data chunk bulk received, but we have active chunk for receiving raw chunk bulks.");
                }

                var chunk = Writer.CurrentChunk;
                if (chunk.ChunkHeader.ChunkStartNumber != message.ChunkStartNumber || chunk.ChunkHeader.ChunkEndNumber != message.ChunkEndNumber)
                {
                    Log.Error("Received DataChunkBulk for TFChunk {chunkStartNumber}-{chunkEndNumber}, but active chunk is {activeChunkStartNumber}-{activeChunkEndNumber}.",
                              message.ChunkStartNumber, message.ChunkEndNumber, chunk.ChunkHeader.ChunkStartNumber, chunk.ChunkHeader.ChunkEndNumber);
                    return;
                }

                if (_subscriptionPos != message.SubscriptionPosition)
                {
                    Log.Error("Received DataChunkBulk at SubscriptionPosition {subscriptionPosition} (0x{subscriptionPosition:X}) while current SubscriptionPosition is {subscriptionPos} (0x{subscriptionPos:X}).",
                              message.SubscriptionPosition, message.SubscriptionPosition, _subscriptionPos, _subscriptionPos);
                    return;
                }

                _framer.UnFrameData(new ArraySegment <byte>(message.DataBytes));
                _subscriptionPos += message.DataBytes.Length;

                if (message.CompleteChunk)
                {
                    Log.Trace("Completing data chunk {chunkStartNumber}-{chunkEndNumber}...", message.ChunkStartNumber, message.ChunkEndNumber);
                    Writer.CompleteChunk();

                    if (_framer.HasData)
                    {
                        ReplicationFail(
                            "There is some data left in framer when completing chunk.",
                            "There is some data left in framer when completing chunk.");
                    }

                    _subscriptionPos = chunk.ChunkHeader.ChunkEndPosition;
                    _framer.Reset();
                }
            }
            catch (Exception exc)
            {
                Log.ErrorException(exc, "Exception in writer.");
                throw;
            }
            finally
            {
                Flush();
            }

            if (message.CompleteChunk || _subscriptionPos - _ackedSubscriptionPos >= MasterReplicationService.ReplicaAckWindow)
            {
                _ackedSubscriptionPos = _subscriptionPos;
                Bus.Publish(new ReplicationMessage.AckLogPosition(_subscriptionId, _ackedSubscriptionPos));
            }
        }
コード例 #10
0
 public void Timeout(StartsSaga state)
 {
     Bus.Publish <MyEvent>();
     MarkAsComplete();
 }
コード例 #11
0
ファイル: NsbEventBus.cs プロジェクト: vikuznetsov/ncqrs
 public void Publish(IEnumerable <IPublishableEvent> eventMessages)
 {
     Bus.Publish(eventMessages.Select(CreateEventMessage).ToArray());
 }
コード例 #12
0
ファイル: NsbEventBus.cs プロジェクト: vikuznetsov/ncqrs
 public void Publish(IPublishableEvent eventMessage)
 {
     Bus.Publish(CreateEventMessage(eventMessage));
 }
コード例 #13
0
ファイル: BusTests.cs プロジェクト: ddonahue/MagicBus
        public void Publish_EmptyEventsParameter_ShouldThrowException()
        {
            var sut = new Bus(null, new HandlerFactoryTestHelper().GetEventHandlers);

            Assert.Throws <ArgumentException>(() => sut.Publish(new List <IEvent>().ToArray()), "The events parameter is null or empty.");
        }
コード例 #14
0
 public void Handle(TestMessage message)
 {
     Bus.Publish(ModifyPublish);
 }
コード例 #15
0
        public void PublishShouldGetProducerFromContainer()
        {
            // Arrange
            var mockConfiguration = new Mock<IConfiguration>();
            var mockProducer = new Mock<IProducer>();
            var mockContainer = new Mock<IBusContainer>();
            var mockProessManagerFinder = new Mock<IProcessManagerFinder>();

            mockConfiguration.Setup(x => x.GetContainer()).Returns(mockContainer.Object);
            mockConfiguration.Setup(x => x.GetProcessManagerFinder()).Returns(mockProessManagerFinder.Object);
            mockConfiguration.Setup(x => x.GetProducer()).Returns(mockProducer.Object);
            mockConfiguration.SetupGet(x => x.TransportSettings).Returns(new TransportSettings ());

            // Act
            var bus = new Bus(mockConfiguration.Object);
            bus.Publish(new FakeMessage1(Guid.NewGuid()), null);

            // Assert
            mockConfiguration.Verify(x => x.GetProducer(), Times.Once());
        }
コード例 #16
0
ファイル: BusTests.cs プロジェクト: improving/RockyBus
        public void publish_without_starting_bus_should_throw_exception()
        {
            Func <Task> action = () => bus.Publish(new CatEvent());

            action.ShouldThrow <InvalidOperationException>().Where(e => e.Message.Contains("start"));
        }
コード例 #17
0
 public void Consume(IVisitAddedOrChangedMessage message)
 {
     Console.WriteLine("VisitAddedOrChangedMessage received.  VisitId:  {0}", message.VisitId);
     Bus.Publish(new RepricingRequestMessage(CorrelationId, message.VisitId));
 }