Пример #1
0
        public override void Initialize(Dictionary <string, object> settings)
        {
            string pluginNamespace = GetContainerNamespace();

            Debug.Assert(pluginNamespace != null);
            TypeContainer tc = TypeContainer.Instance;
            //"IotHubConfigFile", "MessageExchange", "ExchangeToIotHubMessageConverter", "Logger"
            //configure receiver
            IProcessor messageReceiver = tc.GetInstance <IReceiver>(pluginNamespace) as IProcessor;
            IConverter <object, Msg> receivedMessageConverter = tc.GetInstance <IConverter <object, Msg> >(pluginNamespace);

            settings["MessageConverter.OpcUa"] = receivedMessageConverter;
            if (messageReceiver != null)
            {
                this.AddReceiver("MessageReceiver", messageReceiver);
            }

            //configure sender
            IProcessor messageSender = tc.GetInstance <ISender>(pluginNamespace) as IProcessor;
            IConverter <object, Msg> messageConverter = tc.GetInstance <IConverter <object, Msg> >(pluginNamespace);
            IMessageExchange <Msg>   messageExchange  = tc.GetInstance <IMessageExchange <Msg> >(pluginNamespace);

            settings["MessageExchange.Messaging"] = messageExchange;
            settings["MessageConverter.IotHub"]   = messageConverter;
            settings["Logger"] = tc.GetInstance <ILogger>();

            if (messageSender != null)
            {
                this.AddSender("MessageSender", messageSender);
            }

            base.Initialize(settings);
        }
        /// <summary>
        /// Constructor.
        /// </summary>
        /// <param name="exchange">Details on how the exchange should be declared and information
        /// for the queues that should be created.</param>
        /// <param name="messageType"> The message type associated with the exchange.</param>
        public MessageExchangeDefinition(IMessageExchange exchange, Type messageType = null)
        {
            Check.NotNull(exchange, nameof(exchange));

            MessageType = messageType;
            Exchange    = exchange;
        }
        /// <summary>
        /// Makes sure the exchange has been initialized.  This method
        /// should be invoked before asserting the exchange in a test.
        /// </summary>
        /// <param name="value"></param>
        public static void Setup(this IMessageExchange value)
        {
            var mockConn = new Mock <IModel>();

            value.InitializeSettings(new BrokerSettings());
            value.Declare(mockConn.Object);
        }
        /// <summary>
        ///     Возвращает точку обмена сообщениями.
        /// </summary>
        public IMessageExchange GetExchange()
        {
            if (_messageExchange == null)
            {
                var exchangeName = GetName();

                _messageExchange = MessageBus.GetExchange(exchangeName);
            }

            return(_messageExchange);
        }
Пример #5
0
        /// <summary>
        /// Applies all externally defined queue properties to all defined exchange queues.
        /// </summary>
        /// <param name="exchange">Exchange configuration.</param>
        public void ApplyQueueSettings(IMessageExchange exchange)
        {
            Check.NotNull(exchange, nameof(exchange));

            foreach (QueuePropertiesSettings queueProps in GetBrokerQueueProperties(exchange.BrokerName))
            {
                ExchangeQueue queue = exchange.Queues.FirstOrDefault(q => q.QueueName == queueProps.QueueName);
                if (queue != null)
                {
                    queue.RouteKeys = queueProps.RouteKeys.ToArray();
                }
            }
        }
Пример #6
0
        public void Initialize(Dictionary <string, object> settings)
        {
            string[] fieldNames = new string[] { "IotHubConfigFile", "MessageConverter.OpcUa", "MessageExchange.Messaging", "MessageConverter.IotHub", "Logger" };
            FieldValidator.CheckMissingFields(settings, fieldNames);
            string iotHubConfigFile = settings.GetValueOrNull("IotHubConfigFile") as string;

            _iotHubConfig          = ConfigUtility.ReadConfig <IotHubConfig>(iotHubConfigFile);
            _toIotHubDataConverter = settings.GetValueOrNull("MessageConverter.IotHub") as IConverter <TExchangeMsg, object>;
            _alarmMessageExchange  = settings.GetValueOrNull("MessageExchange.Messaging") as IMessageExchange <TExchangeMsg>;
            _logger          = settings.GetValueOrNull("Logger") as ILogger;
            _deviceClienPool = new DeviceClientPool();
            _deviceClienPool.Initialize(_iotHubConfig.IotHubHostName, _iotHubConfig.AlarmDevicePool);
        }
Пример #7
0
        IMessageExchange GetOrAddExchange(NodeContext context, string name, ExchangeType exchangeType)
        {
            IMessageExchange created = null;
            var exchange             = _exchanges.GetOrAdd(name, x =>
            {
                created = exchangeType switch
                {
                    ExchangeType.FanOut => new MessageFanOutExchange(name),
                    ExchangeType.Direct => new MessageDirectExchange(name),
                    ExchangeType.Topic => new MessageTopicExchange(name),
                    _ => throw new ArgumentException($"Unsupported exchange type: {exchangeType}", nameof(exchangeType))
                };

                return(created);
            });
        private async Task PublishAsync(MessageExchangeDefinition exchangeDef, IMessage message)
        {
            if (!await SatisfiesExchangeCriteria(exchangeDef, message))
            {
                return;
            }

            IMessageExchange exchange = exchangeDef.Exchange;

            string[] orderedContentTypes =
            {
                message.GetContentType(),
                exchange.Settings.ContentType
            };

            byte[] messageBody = _serializationMgr.Serialize(message, orderedContentTypes);

            LogPublishingExchangeMessage(message, exchangeDef);

            using (var channel = _connMgr.CreateChannel(exchange.BrokerName))
            {
                exchangeDef.Exchange.Publish(channel, message, messageBody);
            }
        }
Пример #9
0
 protected GrpcMoveTransport(IMessageExchange exchange)
 {
     _exchange = exchange;
 }
 public ExchangeGrpcSendTransportContext(IHostConfiguration hostConfiguration, IMessageExchange exchange)
     : base(hostConfiguration)
 {
     Exchange = exchange;
 }
Пример #11
0
 public GrpcErrorTransport(IMessageExchange exchange)
     : base(exchange)
 {
 }
Пример #12
0
 public GrpcDeadLetterTransport(IMessageExchange exchange)
     : base(exchange)
 {
 }