Exemple #1
0
        /// <inheritdoc />
        public MessageBusServiceHandshakeReplyMessage SendMessageBusHandshake(IEnumerable <Shared.Messages.SubscribeHandler> subscribeHandlers, IEnumerable <Shared.Messages.RequestHandler> requestHandlers, CancellationToken cancellationToken)
        {
            var messageBusServiceHandshakeMessage = new MessageBusServiceHandshakeMessage
            {
                ServerName        = _processInformation.MachineName,
                ServiceName       = _messageBusConfig.ServiceName,
                SendDateTime      = DateTimeOffset.Now,
                SubscribeHandlers = subscribeHandlers,
                RequestHandlers   = requestHandlers,
                ReplyQueue        = _queueNameUtility.ReplyQueue <MessageBusServiceHandshakeMessage>()
            };

            using (var replyQueue = _queueFactory.CreateLocale(messageBusServiceHandshakeMessage.ReplyQueue, true, LocaleQueueMode.TemporaryMaster, false, AccessMode.Receive))
            {
                _logger.Debug("Message Broker Client sending Message Bus Handshake {@Message}", messageBusServiceHandshakeMessage);

                SendToMessageBroker(messageBusServiceHandshakeMessage);

                var messageBusServiceHandshakeReplyMessage = replyQueue.Receive <MessageBusServiceHandshakeReplyMessage>(30000, cancellationToken);

                if (messageBusServiceHandshakeReplyMessage == null)
                {
                    throw new MessageBusHandshakeTimeoutException(messageBusServiceHandshakeMessage);
                }

                messageBusServiceHandshakeReplyMessage.CompletedDateTime = DateTimeOffset.Now;

                _logger.Debug("Message Broker Client has received reply for Message bus Handshake {@ReplyMessage}", messageBusServiceHandshakeReplyMessage);

                return(messageBusServiceHandshakeReplyMessage);
            }
        }
 /// <inheritdoc />
 /// <summary>
 /// Timeout sending handshake to message broker
 /// </summary>
 /// <param name="messageBusServiceHandshakeMessage">Message Bus Handshake Message</param>
 public MessageBusHandshakeTimeoutException(MessageBusServiceHandshakeMessage messageBusServiceHandshakeMessage) : base("Sending Message Bus Handshake Timeout Exception")
 {
     Data.Add(nameof(messageBusServiceHandshakeMessage), messageBusServiceHandshakeMessage?.TrySerializeToJson());
 }