示例#1
0
	void AddSubscriberToMessage ( MessageType messageType, MessageSubscriber subscriber)
	{
		if (!subscriberLists.ContainsKey (messageType))
			subscriberLists [messageType] = new List<MessageSubscriber> ();

		subscriberLists [messageType].Add (subscriber);
	}
示例#2
0
 /**
  * Unsubscribe sub to system-level messages of type t.
  *
  * \param t System-level message type to unsubscribe from
  * \param sub Subscriber to no longer receive messages of type t
  */
 public void Unsubscribe(MessageType t, MessageSubscriber sub)
 {
     new Handler(Looper.MainLooper).Post(() =>
     {
         RemoveSubscription(t, sub);
     });
 }
示例#3
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);
        }
示例#4
0
        public void CanProcessSubscribedMessageWithException()
        {
            var thrown      = false;
            var manualReset = new ManualResetEventSlim(false);
            var sut         = new MessageSubscriber <string>(m =>
            {
                if (!thrown)
                {
                    thrown = true;
                    throw new Exception();
                }
                else
                {
                    manualReset.Set();
                }
            }, new LogServiceProvider());

            var input = new BufferBlock <IMessage>();

            sut.SubscribeTo(input);
            input.Post(new Message <string>("hello", new Dictionary <string, string>()));
            input.Post(new Message <string>("hello", new Dictionary <string, string>()));

            manualReset.Wait(10).Should().BeTrue();
            manualReset.IsSet.Should().BeTrue();
        }
示例#5
0
        public void MessageIsRepublished()
        {
            ArtificialQueueWrapper         qw  = new ArtificialQueueWrapper();
            Mock <ILogger>                 log = new Mock <ILogger>();
            Mock <IMethodInspectorManager> mim = new Mock <IMethodInspectorManager>();

            Mock <IConfigurationManager> config = new Mock <IConfigurationManager>();

            config.Setup(x => x.Get("UseStructureMap", false)).Returns(true);
            var container = new Container(new MicroserviceRegistry(typeof(ConsumeMessageTests).Assembly));

            container.Configure(x => { x.For <IQueueWrapper>().ClearAll().Use(qw); });

            var containerFacade = new ContainerFacade(container, config.Object);

            MessageSubscriber subscriber       = new MessageSubscriber(qw, log.Object, config.Object, _metrics, mim.Object, containerFacade);
            Guid messageGuid                   = Guid.NewGuid();
            BasicDeliverEventArgs eventDetails = new BasicDeliverEventArgs()
            {
                Body = Encoding.ASCII.GetBytes("{uuid:\"" + messageGuid + "\", method:\"GetFish\", source:\"Nowhere\", need:\"redherring\",publishedTime:\"" + DateTime.UtcNow.ToString("s") + "\", lastModifiedBy:\"test\", lastModifiedTime:\"" + DateTime.UtcNow.ToString("s") + "\"}")
            };

            subscriber.ConsumeMessage(null, eventDetails);
            Thread.Sleep(50);
            Assert.AreEqual(1, qw.AcknowledgedMessages.Count);
            Assert.IsTrue(qw.AcknowledgedMessages.Contains(eventDetails));
            Assert.AreEqual(1, qw.PublishedMessages.Count);
        }
示例#6
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);
                }
        }
        public void TwoMessagesWithDifferentNeedsReturnDifferentHashCodes()
        {
            Mock <IQueueWrapper>           qw         = new Mock <IQueueWrapper>();
            Mock <ILogger>                 log        = new Mock <ILogger>();
            Mock <IConfigurationManager>   config     = new Mock <IConfigurationManager>();
            Mock <IMethodInspectorManager> mim        = new Mock <IMethodInspectorManager>();
            MessageSubscriber              subscriber = new MessageSubscriber(qw.Object, log.Object, config.Object, metrics, mim.Object, Mock.Of <IContainerFacade>());


            Guid messageGuid = Guid.NewGuid();

            BasicDeliverEventArgs bdea1 = new BasicDeliverEventArgs();

            bdea1.Body = Encoding.ASCII.GetBytes("{" + $"uuid:\"{messageGuid}\",method:\"Hello\",need:\"1234\"" + "}");
            MessageSubscriber.MethodInspector mi1 = subscriber.GetMethodInspector(bdea1);
            Assert.IsNotNull(mi1);

            BasicDeliverEventArgs bdea2 = new BasicDeliverEventArgs();

            bdea2.Body = Encoding.ASCII.GetBytes("{" + $"uuid:\"{messageGuid}\",method:\"Hello\",need:\"1233\"" + "}");
            MessageSubscriber.MethodInspector mi2 = subscriber.GetMethodInspector(bdea2);
            Assert.IsNotNull(mi2);

            Assert.AreNotEqual(mi1.Hash, mi2.Hash);
        }
 public void AddSubscriber(MessageSubscriber subscriber)
 {
     MessageType[] messageTypes = subscriber.MessageTypes;
     for (int i = 0; i < messageTypes.Length; i++)
     {
         AddSubscriberToMessage(messageTypes[i], subscriber);
     }
 }
示例#9
0
        public void PubSub()
        {
            var pub = new MessagePublisher(9200);
            var sub = new MessageSubscriber("localhost", 9200);

            pub.Close();
            sub.Close();
        }
	void Start()
	{
		subscriber = new MessageSubscriber ();
		subscriber.MessageTypes = MessageTypes;
		subscriber.Handler = Handler;

		MessageBus.Instance.AddSubscriber (subscriber);
	}
示例#11
0
    void Start()
    {
        MessageSubscriber subscriber = new MessageSubscriber();

        subscriber.MessageTypes = MessageTypes;
        subscriber.Handler      = Handler;

        MessageBus.Instance.AddSubscriber(subscriber);
    }
示例#12
0
        public void AddSubscriber(MessageSubscriber subscriber)
        {
            if (_subscribers.Any(x => x.Id == subscriber.Id))
            {
                return;
            }

            _subscribers.Add(subscriber);
        }
示例#13
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);
    }
示例#14
0
        private void RemoveSubscription(MessageType t, MessageSubscriber sub)
        {
            List <MessageSubscriber> sub_list;

            if (system_message_subs.TryGetValue(t, out sub_list))
            {
                // Remove from existing subscriber list
                sub_list.Remove(sub);
            }
        }
示例#15
0
        /// <summary>
        /// Creates a subscription and filter on the message subscriber for the receive port response handler.
        /// </summary>
        /// <param name="messageSubscriber">The message subscriber.</param>
        /// <param name="receivePort">The receive port.</param>
        private void CreateMessageSubscriberFilter(MessageSubscriber messageSubscriber, ReceivePort receivePort)
        {
            var topicChannelKey             = _messageBoxChannelKey;
            var receivePortSubscriptionName = receivePort.Name.FormatKey();

            // Find topic channel to add subscriptions to
            var topicChannelObject = Model.FindMessagingObject(topicChannelKey);

            if (topicChannelObject.application != null && topicChannelObject.messagingObject != null)
            {
                var topicChannel = (TopicChannel)topicChannelObject.messagingObject;

                // Subscriptions will be created independent of subscribers so that messages can be delivered to
                // the subscriptions, meaning the subscription lifetime is not tied to the consumer.  This is a durable
                // subscription and the only ones we intend to create.
                messageSubscriber.IsDurable = true;

                // Create subscription and name it after the receive port
                var subscription = new Subscription(receivePortSubscriptionName, topicChannel.TopicName)
                {
                    IsDurable = messageSubscriber.IsDurable
                };

                _logger.LogDebug(TraceMessages.CreatingReceivePortSubscription, RuleName, receivePort.Name);

                // Create filter expression against the receive port ID
                var targetFilter = new Filter()
                {
                    FilterExpression = $"{ModelConstants.BizTalkAckReceivePortId} = '{((Dictionary<string, object>)messageSubscriber.Properties[ModelConstants.ConfigurationEntry])[ModelConstants.BizTalkAckReceivePortId]}'"
                };

                // Create a group, doesn't matter too much what the operation is as there is only one filter
                var targetFilterGroup = new OrFilterGroup();
                targetFilterGroup.Filters.Add(targetFilter);

                _logger.LogTrace(TraceMessages.CreatedSubscriptionFilterStatement, RuleName, targetFilter.FilterExpression);

                // Create filter
                subscription.Filters.Add(new SubscriptionFilter(targetFilterGroup));

                _logger.LogTrace(TraceMessages.CreatedSubscriptionFilterGroupForReceivePort, RuleName, targetFilterGroup.Operation, receivePort.Name);

                // Add subscription to channel
                topicChannel.Subscriptions.Add(subscription);

                // Relate subscription on channel to the subscriber
                messageSubscriber.TopicSubscriptions.Add(topicChannel.TopicName, subscription.Name);
            }
            else
            {
                var error = string.Format(CultureInfo.CurrentCulture, ErrorMessages.UnableToFindMessagingObjectWithKeyInTargetModel, MessagingObjectType.Channel, topicChannelKey);
                _logger.LogError(error);
                Context.Errors.Add(new ErrorMessage(error));
            }
        }
示例#16
0
        /// <summary>
        /// Creates a subscription and filter on the message subscriber for the send port.
        /// </summary>
        /// <param name="targetApplication">The application in the target.</param>
        /// <param name="messageSubscriber">The message subscriber.</param>
        /// <param name="sendPort">The send port.</param>
        private void CreateMessageSubscriberFilter(Application targetApplication, MessageSubscriber messageSubscriber, SendPort sendPort)
        {
            var topicChannelKey          = _messageBoxChannelKey;
            var sendPortSubscriptionName = sendPort.Name.FormatKey();

            // Find topic channel to add subscriptions to
            var topicChannelObject = Model.FindMessagingObject(topicChannelKey);

            if (topicChannelObject.application != null && topicChannelObject.messagingObject != null)
            {
                var topicChannel = (TopicChannel)topicChannelObject.messagingObject;

                // Subscriptions will be created independent of subscribers so that messages can be delivered to
                // the subscriptions, meaning the subscription lifetime is not tied to the consumer.  This is a durable
                // subscription and the only ones we intend to create.
                messageSubscriber.IsDurable = true;

                // Create subscription and name it after the send port
                var subscription = new Subscription(sendPortSubscriptionName, topicChannel.TopicName)
                {
                    IsDurable = messageSubscriber.IsDurable
                };

                // Is there a subscription on the send port?
                if (sendPort.FilterExpression?.Group != null)
                {
                    // Parse the filter on the send port and create a new one for the target model
                    subscription.Filters.Add(CreateSubscriptionFilter(targetApplication, sendPort));
                }
                else
                {
                    // No filter, in these cases BizTalk will automatically set up a subscription with the
                    // property SPTransportID system property, which is used by orchestrations to automatically
                    // promote this property and associated value on a message published through an orchestration
                    // send port.
                    // There are also cases where there is a Filter document set on the property which has
                    // no groups and is empty (sendPort.FilterExpression.Groups is null).  Treat this as having
                    // no subscription.
                    subscription.Filters.Add(CreateDefaultSubscriptionFilter(targetApplication, sendPort));
                }

                // Add subscription to channel
                topicChannel.Subscriptions.Add(subscription);

                // Relate subscription on channel to the subscriber
                messageSubscriber.TopicSubscriptions.Add(topicChannel.TopicName, subscription.Name);
            }
            else
            {
                var error = string.Format(CultureInfo.CurrentCulture, ErrorMessages.UnableToFindMessagingObjectWithKeyInTargetModel, MessagingObjectType.Channel, topicChannelKey);
                _logger.LogError(error);
                Context.Errors.Add(new ErrorMessage(error));
            }
        }
示例#17
0
    void AddSubscriberToMessage(MessageType messageType,
                                MessageSubscriber subscriber)
    {
        if (!subscriberLists.ContainsKey(messageType))
        {
            subscriberLists [messageType] =
                new List <MessageSubscriber> ();
        }

        subscriberLists [messageType].Add(subscriber);
    }
示例#18
0
        public static void Subscribe(LogCategory category, RecieveLogMessage callback, object contextFilter)
        {
            if (m_subscribers.Find(x => x.Category == category && x.Callback == callback && x.ContextFilter.Equals(contextFilter)) != null)
            {
                WLog.Warning(LogCategory.None, null, "Subscriber list already contains callback: {0}!", callback);
            }

            MessageSubscriber subscriber = new MessageSubscriber(category, callback, contextFilter);

            m_subscribers.Add(subscriber);
        }
示例#19
0
        public void CanProcessSubscribedMessage()
        {
            var manualReset = new ManualResetEvent(false);
            var sut         = new MessageSubscriber <string>(m => manualReset.Set(), new LogServiceProvider());

            var input = new BufferBlock <IMessage>();

            sut.SubscribeTo(input);
            input.Post(new Message <string>("hello", new Dictionary <string, string>()));

            manualReset.WaitOne(10).Should().BeTrue();
        }
示例#20
0
        static void Main(string[] args)
        {
            var applicationUrl = MessageSubscriber.RecieveRabbitMQMessages();
            var process        = new Process();

            process.StartInfo.FileName  = "D:/PuppeteerSharp-Example-master/PuppeteerExample/bin/Debug/netcoreapp3.1/PuppeteerExample.exe";
            process.StartInfo.Arguments = applicationUrl;
            process.Start();
            // proc.WaitForExit();
            var exitCode = process.ExitCode;

            process.Close();
        }
        public CCSMockService()
        {
            try
            {
                // active mq
                this.publisher = new MessagePublisher(TOPIC_NAME_UPDATE_SIMULATION, BROKER);

                this.subscriber = new MessageSubscriber(TOPIC_NAME_UPDATE_CCS, BROKER);
                this.subscriber.OnMessageReceived += new MessageReceivedDelegate(subscriber_OnMessageReceived);
            }
            catch (Exception ex)
            {
                logger.Error("Error creating publisher for activemq" + ex.ToString());
            }
        }
示例#22
0
        public void UndeserialisableMessageIsAcked()
        {
            ArtificialQueueWrapper         qw           = new ArtificialQueueWrapper();
            Mock <ILogger>                 log          = new Mock <ILogger>();
            Mock <IMethodInspectorManager> mim          = new Mock <IMethodInspectorManager>();
            Mock <IConfigurationManager>   config       = new Mock <IConfigurationManager>();
            MessageSubscriber              subscriber   = new MessageSubscriber(qw, log.Object, config.Object, _metrics, mim.Object, Mock.Of <IContainerFacade>());
            BasicDeliverEventArgs          eventDetails = new BasicDeliverEventArgs()
            {
                Body = Encoding.ASCII.GetBytes("{message:\"Hello World\"}")
            };

            subscriber.ConsumeMessage(null, eventDetails);
            Assert.IsTrue(qw.AcknowledgedMessages.Contains(eventDetails));
        }
示例#23
0
        /// <summary>
        /// Creates a message subscriber for a send port.
        /// </summary>
        /// <param name="intermediaryKeyPrefix">The prefix for the endpoint key.</param>
        /// <param name="targetApplication">The application in the target.</param>
        /// <param name="sendPort">The send port.</param>
        /// <returns>The created message subscriber.</returns>
        private MessageSubscriber CreateMessageSubscriberIntermediary(string intermediaryKeyPrefix, Application targetApplication, SendPort sendPort)
        {
            _logger.LogDebug(TraceMessages.CreatingMessageSubscriberIntermediary, RuleName, MigrationTargetResources.MessageSubscriberName, sendPort.Name);

            // Format names
            var applicationName = targetApplication.Name.FormatKey();
            var sendPortName    = sendPort.Name.FormatKey();

            // Create an intermediary based on the message subscriber
            var messageSubscriberIntermediary = new MessageSubscriber(sendPort.Name)
            {
                Description    = MigrationTargetResources.MessageSubscriberDescription,
                Key            = $"{intermediaryKeyPrefix}:{ModelConstants.MessageSubscriberLeafKey}",
                ResourceMapKey = $"topicSubscriber{applicationName.Replace(".", "-").Replace(" ", string.Empty).Replace(":", "-")}{sendPortName.Replace(".", "-").Replace("/", "-").Replace(":", "-")}",
                Rating         = ConversionRating.FullConversion,
                Activator      = true
            };

            // Set scenario and step name as properties on the endpoint
            messageSubscriberIntermediary.Properties.Add(ModelConstants.ScenarioName, $"{applicationName}.{sendPortName}");
            messageSubscriberIntermediary.Properties.Add(ModelConstants.ScenarioStepName, "messageSubscriber");

            // Set BizTalk specific configuration properties
            var configurationEntries = new Dictionary <string, object>()
            {
                { ModelConstants.BizTalkSpName, $"{sendPort.Name}" },
                { ModelConstants.BizTalkSpId, $"{targetApplication.Name.FormatKey()}.{sendPort.Name.FormatKey()}" },
                { ModelConstants.BizTalkAckSendPortName, $"{sendPort.Name}" },
                { ModelConstants.BizTalkAckSendPortId, $"{targetApplication.Name.FormatKey()}.{sendPort.Name.FormatKey()}" }
            };

            // Add configuration properties
            messageSubscriberIntermediary.Properties.Add(ModelConstants.ConfigurationEntry, configurationEntries);

            // Set BizTalk specific routing properties
            var routingProperties = new Dictionary <string, object>()
            {
                { ModelConstants.BizTalkAckSendPortName, $"{sendPortName}" }
            };

            // Add routing properties
            messageSubscriberIntermediary.Properties.Add(ModelConstants.RoutingProperties, routingProperties);

            // Add subscription filter
            CreateMessageSubscriberFilter(targetApplication, messageSubscriberIntermediary, sendPort);

            return(messageSubscriberIntermediary);
        }
示例#24
0
        public void Start()
        {
            MessageSubscriber subscriber = new MessageSubscriber();

            subscriber.MessageTypes = new string[]
            { YagaMessageType.PAUSE_START };
            subscriber.action = StartAction;

            MessageBus.MessageBus.Instance.AddSubscriber(subscriber);

            subscriber.MessageTypes = new string[]
            { YagaMessageType.PAUSE_END };
            subscriber.action = EndAction;

            MessageBus.MessageBus.Instance.AddSubscriber(subscriber);
        }
    public static void addSubscriber(GameObject gObject, Message message, Action <object> action)
    {
        if (instance.subscriberExists(gObject, message))
        {
            Debug.LogError("Objects can't subscribe to the same message multiple times");
            return;
        }

        MessageSubscriber mSubscriber = new MessageSubscriber();

        mSubscriber.subscriber = gObject;
        mSubscriber.action     = action;
        mSubscriber.message    = message;

        instance.messageSubscribers.Add(mSubscriber);
    }
        public void BadMessageReturnsNullMethodInspector()
        {
            Mock <IQueueWrapper>           qw         = new Mock <IQueueWrapper>();
            Mock <ILogger>                 log        = new Mock <ILogger>();
            Mock <IConfigurationManager>   config     = new Mock <IConfigurationManager>();
            Mock <IMethodInspectorManager> mim        = new Mock <IMethodInspectorManager>();
            MessageSubscriber              subscriber = new MessageSubscriber(qw.Object, log.Object, config.Object, metrics, mim.Object, Mock.Of <IContainerFacade>());


            BasicDeliverEventArgs bdea = new BasicDeliverEventArgs
            {
                Body = Encoding.ASCII.GetBytes("Hello, Dave!")
            };

            MessageSubscriber.MethodInspector mi = subscriber.GetMethodInspector(bdea);
            Assert.IsNull(mi);
        }
        public void LongMessageReturnsGoodMethodInspector()
        {
            Mock <IQueueWrapper>           qw         = new Mock <IQueueWrapper>();
            Mock <ILogger>                 log        = new Mock <ILogger>();
            Mock <IConfigurationManager>   config     = new Mock <IConfigurationManager>();
            Mock <IMethodInspectorManager> mim        = new Mock <IMethodInspectorManager>();
            MessageSubscriber              subscriber = new MessageSubscriber(qw.Object, log.Object, config.Object, metrics, mim.Object, Mock.Of <IContainerFacade>());


            BasicDeliverEventArgs bdea = new BasicDeliverEventArgs
            {
                Body = Encoding.ASCII.GetBytes("{" + $"uuid:\"{Guid.NewGuid()}\",method:\"Hello\",need:\"12345678901234567890123456789012345678901234567890123456789012345678901234567890\"" + "}")
            };

            MessageSubscriber.MethodInspector mi = subscriber.GetMethodInspector(bdea);
            Assert.IsNotNull(mi);
        }
        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();
                }
            }
        }
        public void AcceptOnErrorAlwaysRejectsWhenErrorsAreNotPresent()
        {
            Mock <IQueueWrapper>           qw         = new Mock <IQueueWrapper>();
            Mock <ILogger>                 log        = new Mock <ILogger>();
            Mock <IConfigurationManager>   config     = new Mock <IConfigurationManager>();
            Mock <IMethodInspectorManager> mim        = new Mock <IMethodInspectorManager>();
            MessageSubscriber              subscriber = new MessageSubscriber(qw.Object, log.Object, config.Object, metrics, mim.Object, Mock.Of <IContainerFacade>());

            HandlerAttribute handlerAttribute = new HandlerAttribute("Blah")
            {
                ErrorsBehaviour = ErrorsBehaviour.AcceptOnlyIfErrorsExist, AcceptanceBehaviour = AcceptanceBehaviour.OnlyWithoutSolution
            };
            object message = new Message <string, bool>()
            {
            };

            Assert.IsFalse(subscriber.ProcessAcceptanceBehaviours(handlerAttribute, typeof(Message <string, bool>), message));
        }
示例#31
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]));
                }
        }
示例#32
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);
        }
    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);
    }
示例#34
0
	void RemoveSubscriberToMessage ( MessageType messageType, MessageSubscriber subscriber)
	{
		if (subscriberLists.ContainsKey (messageType))
		subscriberLists [messageType].Remove (subscriber);
	}
示例#35
0
	public void AddSubscriber( MessageSubscriber subscriber )
	{
		MessageType[] messageTypes = subscriber.MessageTypes;
		for (int i = 0; i < messageTypes.Length; i++)
			AddSubscriberToMessage (messageTypes[i], subscriber);
	}
示例#36
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) { }
        }
 public UnregisterMessageSubscriberTester(Messenger messenger)
 {
   _subscriber = new MessageSubscriber(messenger);
 }
    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);
    }
示例#39
0
	void SendMessageToSubscriber(Message message, MessageSubscriber subscriber)
	{
		subscriber.Handler.HandleMessage (message);
	}
    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);
    }