Exemplo n.º 1
0
        public void Unsubscribe()
        {
            using (var pub = new MessagePublisher(9202))
                using (var sub = new MessageSubscriber("localhost", 9202))
                {
                    var handler = new TestSubscribeHandler();
                    sub.SetReceiveHandleEvent(handler);
                    sub.Listen();
                    sub.Subscribe(Encoding.UTF8.GetBytes("A"));
                    Thread.Sleep(200);

                    pub.Send(Encoding.UTF8.GetBytes("A"), Encoding.UTF8.GetBytes("hello"));
                    Thread.Sleep(200);

                    Assert.Equal("A", Encoding.UTF8.GetString(handler.Block[0]));
                    Assert.Equal("hello", Encoding.UTF8.GetString(handler.Block[1]));
                    handler.Block = null;

                    sub.Unsubscribe(Encoding.UTF8.GetBytes("A"));
                    Thread.Sleep(200);

                    pub.Send(Encoding.UTF8.GetBytes("A"), Encoding.UTF8.GetBytes("hello"));
                    Thread.Sleep(200);

                    Assert.Null(handler.Block);
                }
        }
Exemplo n.º 2
0
        public void DisposeRecipientWrapped()
        {
            var  target     = new Messenger();
            var  subscriber = new MessageSubscriber(target);
            bool received   = false;

            subscriber.Subscribe <Message>(m => received = true);

            int c = target.Publish(Message.Empty);

            Assert.AreEqual(1, c);

#if !SILVERLIGHT
            DisplayContext.Current.Dispatcher.DoEvents();
#endif

            Assert.IsTrue(received);

            received   = false;
            subscriber = null;
            GC.Collect();
            GC.WaitForPendingFinalizers();

            c = target.Publish(Message.Empty);
            Assert.AreEqual(0, c);
        }
Exemplo n.º 3
0
    public IBusSubscriber Subscribe <T>(Func <IServiceProvider, T, object, Task> handle)
        where T : class
    {
        var type = typeof(T);

        _messageSubscribersChannel.Writer.TryWrite(MessageSubscriber.Subscribe(type,
                                                                               (serviceProvider, message, context) => handle(serviceProvider, (T)message, context)));
        return(this);
    }
Exemplo n.º 4
0
        public void MessageWithoutParameterIsReceivedWrapped()
        {
            Messenger         target     = new Messenger();
            MessageSubscriber subscriber = new MessageSubscriber(target);

            bool received1 = false;
            bool received2 = false;

            subscriber.Subscribe <Message>(m => received1 = true);
            subscriber.Subscribe <Message>(m => received2 = true);

            target.Publish(Message.Empty);

#if !SILVERLIGHT
            DisplayContext.Current.Dispatcher.DoEvents();
#endif
            Assert.IsTrue(received1);
            Assert.IsTrue(received2);
        }
Exemplo n.º 5
0
    public void MessageWithoutParameterIsReceivedWrapped()
    {
      Messenger target = new Messenger();
      MessageSubscriber subscriber = new MessageSubscriber(target);

      bool received1 = false;
      bool received2 = false;

      subscriber.Subscribe<Message>(m => received1 = true);
      subscriber.Subscribe<Message>(m => received2 = true);

      target.Publish(Message.Empty);

#if !SILVERLIGHT
      DisplayContext.Current.Dispatcher.DoEvents();
#endif
      Assert.IsTrue(received1);
      Assert.IsTrue(received2);
    }
Exemplo n.º 6
0
        public void NotifiedInRegistrationOrderWrapped()
        {
            Messenger         target     = new Messenger();
            MessageSubscriber subscriber = new MessageSubscriber(target);

            int notificationCounter = 0;
            int notified1           = 0;
            int notified2           = 0;

            subscriber.Subscribe <Message>(m => notified1 = ++notificationCounter);
            subscriber.Subscribe <Message>(m => notified2 = ++notificationCounter);

            target.Publish(Message.Empty);

#if !SILVERLIGHT
            DisplayContext.Current.Dispatcher.DoEvents();
#endif

            Assert.AreEqual(1, notified1);
            Assert.AreEqual(2, notified2);
        }
Exemplo n.º 7
0
        public NotificationManager()
        {
            _notifications = new ObservableCollection <Notification>();
            _subscriptions = new MessageSubscriber();
            _closeCommand  = new RelayCommand <Notification>(Remove);
            _subscriptions.Subscribe <NotificationMessage>(OnNotificationMessage);

            _notificationControl = new Notifications();
            _notificationControl.CloseCommand = _closeCommand;
            _notificationControl.ItemsSource  = _notifications;
            _notificationControl.SizeChanged += OnContentResized;

            _notificationPopup       = new Popup();
            _notificationPopup.Child = _notificationControl;

            _notifications.CollectionChanged += OnNotificationsCollectionChanged;
        }
        public void Post([FromBody] PublishConfiguration publishConfiguration)
        {
            foreach (var item in _context.channelOnboard)
            {
                MessagePublisher mp = new MessagePublisher(item.sourceName, publishConfiguration.sourceNotificationInterval);
                var subscriber      = _context.subscriberOnboard.Where(s => s.ChannelId == item.Id).FirstOrDefault();
                if (subscriber != null)
                {
                    MessageSubscriber sub1 = new MessageSubscriber(subscriber.SubEmail, subscriber.Category);
                    sub1.Subscribe(mp);
                    mp.Publish();

                    IntrimData.SetData(mp.GetAllNotification());
                    //_context.notificationQueue.AddRange(mp.GetAllNotification());
                    //_context.SaveChanges();
                }
            }
        }
Exemplo n.º 9
0
        public void PubSubTopic(string topic, string message)
        {
            using (var pub = new MessagePublisher(9201))
                using (var sub = new MessageSubscriber("localhost", 9201))
                {
                    var handler = new TestSubscribeHandler();
                    sub.SetReceiveHandleEvent(handler);
                    sub.Listen();
                    sub.Subscribe(Encoding.UTF8.GetBytes(topic));
                    Thread.Sleep(200);

                    pub.Send(Encoding.UTF8.GetBytes(topic), Encoding.UTF8.GetBytes(message));
                    Thread.Sleep(200);

                    Assert.Equal(topic, Encoding.UTF8.GetString(handler.Block[0]));
                    Assert.Equal(message, Encoding.UTF8.GetString(handler.Block[1]));
                }
        }
Exemplo n.º 10
0
        static void Main(string[] args)
        {
            try
            {
                TransportSettings ts = TransportSettings.UseRabbitMq("localhost");
                int saltNumber = new Random().Next(1000, 10000);
                string appName = string.Format("cclient_{0}", saltNumber);

                var bus = ServiceBusFactory.New(sbc =>
                {
                    sbc.ReceiveFrom(ts.GetQueueUri(appName));
                    sbc.UseControlBus();

                    ts.ApplyGlobalConfig(sbc);

                });

                bus.PublishRequest(new NodeSetupRequest
                {
                    NodeId = appName,
                    CorrelationId = CombGuid.Generate(),
                    NqApplicationId = 1000,
                    NqInstanceNumber = 0,
                    NqApplicationVersionInfo = "1.0.0.0"
                }, x =>
                {
                    x.HandleTimeout(TimeSpan.FromSeconds(10d), () =>
                    {
                        Console.WriteLine("Node setup request timed out - please ensure server connectivity and try again.");
                        throw new TimeoutException();
                    });
                    x.HandleFault(fault =>
                    {
                        Console.WriteLine("Node setup request total error.");
                        throw new IOException();

                    });
                    x.Handle<NodeSetupResponse>(msg =>
                    {
                        Console.WriteLine("Got NodeSetupResponse: " + msg.ToString());
                        x.SetTimeout(TimeSpan.FromSeconds(30));

                    });
                });

                using (var ms = new MessageSubscriber(bus))
                {
                    ms.Subscribe();
                    Console.WriteLine("Waiting for messages. Press Escape to exit.");

                    while (Console.ReadKey().Key != ConsoleKey.Escape)
                    {
                        Thread.Sleep(10);
                    }
                }

                bus.Dispose();
            }
            catch (TimeoutException)
            { }
            catch (IOException) { }
        }
Exemplo n.º 11
0
 public void Register()
 {
     _subscriber.Subscribe <Message>(Action);
 }
Exemplo n.º 12
0
    public void NotifiedInRegistrationOrderWrapped()
    {
      Messenger target = new Messenger();
      MessageSubscriber subscriber = new MessageSubscriber(target);

      int notificationCounter = 0;
      int notified1 = 0;
      int notified2 = 0;

      subscriber.Subscribe<Message>(m => notified1 = ++notificationCounter);
      subscriber.Subscribe<Message>(m => notified2 = ++notificationCounter);

      target.Publish(Message.Empty);

#if !SILVERLIGHT
      DisplayContext.Current.Dispatcher.DoEvents();
#endif

      Assert.AreEqual(1, notified1);
      Assert.AreEqual(2, notified2);
    }
Exemplo n.º 13
0
    public void DisposeRecipientWrapped()
    {
      var target = new Messenger();
      var subscriber = new MessageSubscriber(target);
      bool received = false;

      subscriber.Subscribe<Message>(m => received = true);

      int c = target.Publish(Message.Empty);
      Assert.AreEqual(1, c);

#if !SILVERLIGHT
      DisplayContext.Current.Dispatcher.DoEvents();
#endif

      Assert.IsTrue(received);

      received = false;
      subscriber = null;
      GC.Collect();
      GC.WaitForPendingFinalizers();

      c = target.Publish(Message.Empty);
      Assert.AreEqual(0, c);
    }