public static IEndpoint New(IMsmqEndpointAddress address, IMessageSerializer serializer)
 {
     return(New(new CreateMsmqEndpointSettings(address)
     {
         Serializer = serializer,
     }));
 }
Example #2
0
 public static IEndpoint New(IMsmqEndpointAddress address, IMessageSerializer serializer)
 {
     return New(new CreateMsmqEndpointSettings(address)
         {
             Serializer = serializer,
         });
 }
Example #3
0
        public IInboundTransport BuildInbound(ITransportSettings settings)
        {
            try
            {
                var msmqEndpointAddress        = new MsmqEndpointAddress(settings.Address.Uri, settings.Transactional);
                TransportSettings msmqSettings = GetTransportSettings(settings, msmqEndpointAddress);

                IMsmqEndpointAddress transportAddress = msmqSettings.MsmqAddress();

                if (transportAddress.IsLocal)
                {
                    ValidateLocalTransport(msmqSettings);

                    PurgeExistingMessagesIfRequested(msmqSettings);
                }

                var connection        = new MessageQueueConnection(transportAddress, QueueAccessMode.Receive);
                var connectionHandler = new ConnectionHandlerImpl <MessageQueueConnection>(connection);

                if (msmqSettings.Transactional)
                {
                    return(new TransactionalInboundMsmqTransport(transportAddress, connectionHandler,
                                                                 msmqSettings.TransactionTimeout, msmqSettings.IsolationLevel));
                }

                return(new NonTransactionalInboundMsmqTransport(transportAddress, connectionHandler));
            }
            catch (Exception ex)
            {
                throw new TransportException(settings.Address.Uri, "Failed to create MSMQ inbound transport", ex);
            }
        }
Example #4
0
        public IOutboundTransport BuildOutbound(ITransportSettings settings)
        {
            try
            {
                var msmqEndpointAddress        = new MsmqEndpointAddress(settings.Address.Uri, settings.Transactional);
                TransportSettings msmqSettings = GetTransportSettings(settings, msmqEndpointAddress);

                IMsmqEndpointAddress transportAddress = msmqSettings.MsmqAddress();

                if (transportAddress.IsLocal)
                {
                    ValidateLocalTransport(msmqSettings);
                }

                var connection        = new MessageQueueConnection(transportAddress, QueueAccessMode.Send);
                var connectionHandler = new ConnectionHandlerImpl <MessageQueueConnection>(connection);

                if (msmqSettings.Transactional)
                {
                    return(new TransactionalOutboundMsmqTransport(transportAddress, connectionHandler));
                }

                return(new NonTransactionalOutboundMsmqTransport(transportAddress, connectionHandler));
            }
            catch (Exception ex)
            {
                throw new TransportException(settings.Address.Uri, "Failed to create MSMQ outbound transport", ex);
            }
        }
		public MessageQueueConnection(IMsmqEndpointAddress address, QueueAccessMode accessMode)
		{
			_address = address;
			_accessMode = accessMode;
			_multicastAddress = null;

			switch (_accessMode)
			{
				case QueueAccessMode.Send:
					_formatName = _address.OutboundFormatName;
					break;

				case QueueAccessMode.Peek:
				case QueueAccessMode.PeekAndAdmin:
				case QueueAccessMode.Receive:
				case QueueAccessMode.ReceiveAndAdmin:
					_formatName = _address.InboundFormatName;
					_multicastAddress = address.MulticastAddress;
					break;

				default:
					throw new EndpointException(_address.Uri, "An endpoint connection cannot be send and receive");
			}

			_needReconnect = true;
		}
		public TransactionalInboundMsmqTransport(IMsmqEndpointAddress address, TimeSpan transactionTimeout,
		                                         IsolationLevel isolationLevel)
			: base(address)
		{
			_transactionTimeout = transactionTimeout;
			_isolationLevel = isolationLevel;
		}
 public TransactionalInboundMsmqTransport(IMsmqEndpointAddress address,
                                          ConnectionHandler<MessageQueueConnection> connectionHandler,
                                          TimeSpan transactionTimeout,
                                          IsolationLevel isolationLevel)
     : base(address, connectionHandler)
 {
     _transactionTimeout = transactionTimeout;
     _isolationLevel = isolationLevel;
 }
 public TransactionalInboundMsmqTransport(IMsmqEndpointAddress address,
                                          ConnectionHandler <MessageQueueConnection> connectionHandler,
                                          TimeSpan transactionTimeout,
                                          IsolationLevel isolationLevel)
     : base(address, connectionHandler)
 {
     _transactionTimeout = transactionTimeout;
     _isolationLevel     = isolationLevel;
 }
Example #9
0
        public MsmqEndpoint(IMsmqEndpointAddress address, IMessageSerializer serializer, IMsmqTransport transport, IMsmqTransport errorTransport)
            : base(address, serializer)
        {
            _tracker = new MessageRetryTracker(5);

            _transport      = transport;
            _errorTransport = errorTransport;

            SetDisposedMessage();
        }
Example #10
0
 public static void Manage(IMsmqEndpointAddress address, Action <IEndpointManagement> action)
 {
     try
     {
         var management = new MsmqEndpointManagement(address);
         action(management);
     }
     catch (Exception ex)
     {
         throw new TransportException(address.Uri, "There was a problem managing the transport", ex);
     }
 }
        protected virtual void Dispose(bool disposing)
        {
            if (_disposed)
            {
                return;
            }
            if (disposing)
            {
                Disconnect();

                _address = null;
            }

            _disposed = true;
        }
Example #12
0
        public MessageQueueConnection(IMsmqEndpointAddress address, QueueAccessMode accessMode)
        {
            _address          = address;
            _accessMode       = accessMode;
            _multicastAddress = null;

            switch (_accessMode)
            {
            case QueueAccessMode.Send:
                _formatName = _address.OutboundFormatName;
                break;

            case QueueAccessMode.Peek:
            case QueueAccessMode.PeekAndAdmin:
            case QueueAccessMode.Receive:
            case QueueAccessMode.ReceiveAndAdmin:
                _formatName       = _address.InboundFormatName;
                _multicastAddress = address.MulticastAddress;
                break;

            default:
                throw new EndpointException(_address.Uri, "An endpoint connection cannot be send and receive");
            }
        }
		public static IEndpointManagement New(IMsmqEndpointAddress address)
		{
			return new MsmqEndpointManagement(address);
		}
		private MsmqEndpointManagement(IMsmqEndpointAddress address)
		{
			_address = address;
		}
		public TransactionalOutboundMsmqTransport(IMsmqEndpointAddress address)
			: base(address)
		{
		}
 public static void Manage(IMsmqEndpointAddress address, Action<IEndpointManagement> action)
 {
     try
     {
         var management = new MsmqEndpointManagement(address);
         action(management);
     }
     catch (Exception ex)
     {
         throw new TransportException(address.Uri, "There was a problem managing the transport", ex);
     }
 }
Example #17
0
		protected AbstractMsmqTransport(IMsmqEndpointAddress address)
		{
			_address = address;
		}
Example #18
0
		protected virtual void Dispose(bool disposing)
		{
			if (_disposed) return;
			if (disposing)
			{
				Disconnect();

				_address = null;
			}

			_disposed = true;
		}
		protected OutboundMsmqTransport(IMsmqEndpointAddress address)
		{
			_address = address;
			_connection = new MessageQueueConnection(address, QueueAccessMode.Send);
		}
		public NonTransactionalInboundMsmqTransport(IMsmqEndpointAddress address)
			: base(address)
		{
		}
Example #21
0
 public NonTransactionalMsmqTransport(IMsmqEndpointAddress address)
     : base(address)
 {
 }
Example #22
0
 private MsmqEndpointManagement(IMsmqEndpointAddress address)
 {
     _address = address;
 }
 protected AbstractMsmqTransport(IMsmqEndpointAddress address)
 {
     _address = address;
 }
Example #24
0
 public static IEndpointManagement New(IMsmqEndpointAddress address)
 {
     return(new MsmqEndpointManagement(address));
 }
Example #25
0
 protected OutboundMsmqTransport(IMsmqEndpointAddress address,
                                 ConnectionHandler <MessageQueueConnection> connectionHandler)
 {
     _address           = address;
     _connectionHandler = connectionHandler;
 }
 public NonTransactionalOutboundMsmqTransport(IMsmqEndpointAddress address,
                                              ConnectionHandler <MessageQueueConnection> connectionHandler)
     : base(address, connectionHandler)
 {
 }
		public TransactionalOutboundMsmqTransport(IMsmqEndpointAddress address,
		                                          ConnectionHandler<MessageQueueConnection> connectionHandler)
			: base(address, connectionHandler)
		{
		}
		protected InboundMsmqTransport(IMsmqEndpointAddress address, ConnectionHandler<MessageQueueConnection> connectionHandler)
		{
			_address = address;
			_connectionHandler = connectionHandler;
		}
        public static long GetMessageCount(this IMsmqEndpointAddress address)
        {
            IEndpointManagement management = MsmqEndpointManagement.New(address.Uri);

            return(management.Count());
        }
		private MsmqEndpointManagement(IEndpointAddress address)
		{
			_address = address as MsmqEndpointAddress ?? new MsmqEndpointAddress(address.Uri);
		}
 MsmqEndpointManagement(IEndpointAddress address)
 {
     _address = address as MsmqEndpointAddress ?? new MsmqEndpointAddress(address.Uri);
 }