示例#1
0
 public ConsumerSetting()
 {
     ClusterName    = "DefaultCluster";
     NameServerList = new List <IPEndPoint>()
     {
         new IPEndPoint(SocketUtils.GetLocalIPV4(), 9493)
     };
     SocketSetting           = new SocketSetting();
     RebalanceInterval       = 1000;
     HeartbeatBrokerInterval = 1000;
     RefreshBrokerAndTopicRouteInfoInterval     = 1000 * 5;
     CommitConsumerOffsetInterval               = 1000;
     PullMessageFlowControlThreshold            = 10000;
     PullMessageFlowControlStepPercent          = 1;
     PullMessageFlowControlStepWaitMilliseconds = 1;
     SuspendPullRequestMilliseconds             = 60 * 1000;
     PullRequestTimeoutMilliseconds             = 70 * 1000;
     RetryMessageInterval               = 1000;
     PullMessageBatchSize               = 64;
     ConsumeFromWhere                   = ConsumeFromWhere.LastOffset;
     MessageHandleMode                  = MessageHandleMode.Parallel;
     AutoPull                           = true;
     CommitConsumeOffsetAsync           = true;
     ManualPullLocalMessageQueueMaxSize = 10 * 10000;
     IgnoreLastConsumedOffset           = false;
 }
 public SocketRemotingServer(IPEndPoint listeningEndPoint, SocketSetting setting = null)
 {
     _setting = setting ?? new SocketSetting();
     _receiveDataBufferPool = new BufferPool(_setting.ReceiveDataBufferSize, _setting.ReceiveDataBufferPoolSize);
     _serverSocket          = new ServerSocket(listeningEndPoint, _setting, _receiveDataBufferPool, HandleRemotingRequest);
     _requestHandlerDict    = new Dictionary <int, IRequestHandler>();
 }
示例#3
0
        public EQueueSettingService(IConfiguration configuration)
        {
            var setting = new EQueueSetting();

            configuration.GetSection("EQueueSetting").Bind(setting);

            var nameServerAddresses = setting.NameServerAddresses;

            if (string.IsNullOrWhiteSpace(nameServerAddresses))
            {
                var defaultNameServer = new IPEndPoint(SocketUtils.GetLocalIPV4(), 9493);
                var defaultList       = new List <IPEndPoint>
                {
                    defaultNameServer
                };
                NameServerList = defaultList;
            }
            else
            {
                var addressList  = nameServerAddresses.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                var endpointList = new List <IPEndPoint>();
                foreach (var address in addressList)
                {
                    var array    = address.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries);
                    var endpoint = new IPEndPoint(IPAddress.Parse(array[0]), int.Parse(array[1]));
                    endpointList.Add(endpoint);
                }
                NameServerList = endpointList;
            }

            EnableMonitorMessageAccumulate       = setting.EnableMonitorMessageAccumulate;
            MessageAccumulateThreshold           = setting.MessageAccumulateThreshold;
            ScanMessageAccumulateIntervalSeconds = setting.ScanMessageAccumulateIntervalSeconds;
            SocketSetting = new SocketSetting();
        }
示例#4
0
 public ProducerSetting()
 {
     BrokerAddress                 = new IPEndPoint(SocketUtils.GetLocalIPV4(), 5000);
     BrokerAdminAddress            = new IPEndPoint(SocketUtils.GetLocalIPV4(), 5002);
     SocketSetting                 = new SocketSetting();
     UpdateTopicQueueCountInterval = 1000;
 }
示例#5
0
        static Settings()
        {
            var nameServerAddresses = ConfigurationManager.AppSettings["nameServerAddresses"];

            if (string.IsNullOrWhiteSpace(nameServerAddresses))
            {
                var defaultNameServer = new IPEndPoint(SocketUtils.GetLocalIPV4(), 9493);
                var defaultList       = new List <IPEndPoint>();
                defaultList.Add(defaultNameServer);
                NameServerList = defaultList;
            }
            else
            {
                var addressList  = nameServerAddresses.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
                var endpointList = new List <IPEndPoint>();
                foreach (var address in addressList)
                {
                    var array    = address.Split(new string[] { ":" }, StringSplitOptions.RemoveEmptyEntries);
                    var endpoint = new IPEndPoint(IPAddress.Parse(array[0]), int.Parse(array[1]));
                    endpointList.Add(endpoint);
                }
                NameServerList = endpointList;
            }

            var enableMonitorMessageAccumulate = ConfigurationManager.AppSettings["enableMonitorMessageAccumulate"];

            if (string.IsNullOrWhiteSpace(enableMonitorMessageAccumulate))
            {
                EnableMonitorMessageAccumulate = false;
            }
            else
            {
                EnableMonitorMessageAccumulate = bool.Parse(enableMonitorMessageAccumulate);
            }

            var messageAccumulateThreshold = ConfigurationManager.AppSettings["messageAccumulateThreshold"];

            if (string.IsNullOrWhiteSpace(messageAccumulateThreshold))
            {
                MessageAccumulateThreshold = 10 * 10000;
            }
            else
            {
                MessageAccumulateThreshold = int.Parse(messageAccumulateThreshold);
            }

            var scanMessageAccumulateIntervalSeconds = ConfigurationManager.AppSettings["scanMessageAccumulateIntervalSeconds"];

            if (string.IsNullOrWhiteSpace(scanMessageAccumulateIntervalSeconds))
            {
                ScanMessageAccumulateIntervalSeconds = 60 * 5;
            }
            else
            {
                ScanMessageAccumulateIntervalSeconds = int.Parse(scanMessageAccumulateIntervalSeconds);
            }

            SocketSetting = new SocketSetting();
        }
 public SocketRemotingServer(string name, IPEndPoint listeningEndPoint, SocketSetting setting = null)
 {
     _setting = setting ?? new SocketSetting();
     _receiveDataBufferPool = new BufferPool(_setting.ReceiveDataBufferSize, _setting.ReceiveDataBufferPoolSize);
     _serverSocket          = new ServerSocket(listeningEndPoint, _setting, _receiveDataBufferPool, HandleRemotingRequest);
     _requestHandlerDict    = new Dictionary <int, IRequestHandler>();
     _logger = CPTS.Common.EngineCommon.Logger;
 }
示例#7
0
 public SocketRemotingServer(string name, IPEndPoint listeningEndPoint, SocketSetting setting = null)
 {
     _setting = setting ?? new SocketSetting();
     _receiveDataBufferPool = new BufferPool(_setting.ReceiveDataBufferSize, _setting.ReceiveDataBufferPoolSize);
     _serverSocket = new ServerSocket(listeningEndPoint, _setting, _receiveDataBufferPool, HandleRemotingRequest);
     _requestHandlerDict = new Dictionary<int, IRequestHandler>();
     _logger = ObjectContainer.Resolve<ILoggerFactory>().Create(name ?? GetType().Name);
 }
示例#8
0
 public BrokerSetting()
 {
     ProducerSocketSetting = new SocketSetting { Address = SocketUtils.GetLocalIPV4().ToString(), Port = 5000, Backlog = 5000 };
     ConsumerSocketSetting = new SocketSetting { Address = SocketUtils.GetLocalIPV4().ToString(), Port = 5001, Backlog = 5000 };
     NotifyWhenMessageArrived = true;
     DeleteMessageInterval = 1000 * 60 * 60;
     DefaultTopicQueueCount = 4;
 }
 public SocketRemotingServer(string name, SocketSetting socketSetting, ISocketEventListener socketEventListener = null)
 {
     _serverSocket = new ServerSocket(socketEventListener);
     _requestHandlerDict = new Dictionary<int, IRequestHandler>();
     _logger = ObjectContainer.Resolve<ILoggerFactory>().Create(name ?? GetType().Name);
     _serverSocket.Bind(socketSetting.Address, socketSetting.Port).Listen(socketSetting.Backlog);
     _started = false;
 }
示例#10
0
 public SocketRemotingServer(string name, IPEndPoint listeningEndPoint, SocketSetting setting = null)
 {
     _setting = setting ?? new SocketSetting();
     _receiveDataBufferPool = new BufferPool(_setting.ReceiveDataBufferSize, _setting.ReceiveDataBufferPoolSize);
     _serverSocket          = new ServerSocket(listeningEndPoint, _setting, _receiveDataBufferPool, HandleRemotingRequest);
     _requestHandlerDict    = new Dictionary <int, IRequestHandler>();
     _logger = ObjectContainer.Resolve <ILoggerFactory>().Create(name ?? GetType().Name);
 }
示例#11
0
 public ProducerSetting()
 {
     BrokerAddress                 = new IPEndPoint(SocketUtils.GetLocalIPV4(), 5000);
     BrokerAdminAddress            = new IPEndPoint(SocketUtils.GetLocalIPV4(), 5002);
     SocketSetting                 = new SocketSetting();
     UpdateTopicQueueCountInterval = 1000;
     HeartbeatBrokerInterval       = 1000;
     MessageMaxSize                = 1024 * 1024 * 4;
 }
示例#12
0
        public BaseController()
        {
            var httpContextAccessor = (IHttpContextAccessor)ServiceLocator.Instance.GetService(typeof(IHttpContextAccessor));

            SocketSetting = ((IOptions <SocketSetting>)httpContextAccessor.HttpContext.RequestServices.GetService(typeof(IOptions <SocketSetting>))).Value;
            var loggerFactory = (ILoggerFactory)httpContextAccessor.HttpContext.RequestServices.GetService(typeof(ILoggerFactory));

            logger = loggerFactory.CreateLogger <T>();
        }
示例#13
0
 public static IEnumerable<SocketRemotingClient> CreateRemotingClientList(IEnumerable<IPEndPoint> endpointList, SocketSetting socketSetting)
 {
     var remotingClientList = new List<SocketRemotingClient>();
     foreach (var endpoint in endpointList)
     {
         var remotingClient = new SocketRemotingClient(endpoint, socketSetting);
         remotingClientList.Add(remotingClient);
     }
     return remotingClientList;
 }
示例#14
0
 public BrokerSetting()
 {
     ProducerSocketSetting = new SocketSetting {
         Address = SocketUtils.GetLocalIPV4().ToString(), Port = 5000, Backlog = 5000
     };
     ConsumerSocketSetting = new SocketSetting {
         Address = SocketUtils.GetLocalIPV4().ToString(), Port = 5001, Backlog = 5000
     };
     NotifyWhenMessageArrived = true;
     DeleteMessageInterval    = 1000 * 60 * 60;
     DefaultTopicQueueCount   = 4;
 }
示例#15
0
 public ProducerSetting()
 {
     ClusterName    = "DefaultCluster";
     NameServerList = new List <IPEndPoint>()
     {
         new IPEndPoint(SocketUtils.GetLocalIPV4(), 9493)
     };
     SocketSetting = new SocketSetting();
     RefreshBrokerAndTopicRouteInfoInterval = 1000 * 5;
     HeartbeatBrokerInterval  = 1000;
     MessageMaxSize           = 1024 * 1024 * 4;
     SendMessageMaxRetryCount = 5;
 }
示例#16
0
 public BrokerSetting()
 {
     ProducerSocketSetting = new SocketSetting { Address = SocketUtils.GetLocalIPV4().ToString(), Port = 5000, Backlog = 5000 };
     ConsumerSocketSetting = new SocketSetting { Address = SocketUtils.GetLocalIPV4().ToString(), Port = 5001, Backlog = 5000 };
     AdminSocketSetting = new SocketSetting { Address = SocketUtils.GetLocalIPV4().ToString(), Port = 5002, Backlog = 5000 };
     NotifyWhenMessageArrived = true;
     RemoveConsumedMessageInterval = 1000 * 5;
     RemoveExceedMaxCacheQueueIndexInterval = 1000 * 5;
     CheckBlockingPullRequestMilliseconds = 1000;
     DefaultTopicQueueCount = 4;
     ScanNotActiveConsumerInterval = 1000 * 5;
     ConsumerExpiredTimeout = 1000 * 60;
     QueueIndexMaxCacheSize = 500 * 10000;
 }
示例#17
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="serverEndPoint"></param>
        /// <param name="setting"></param>
        /// <param name="remoteProtocol"></param>
        public ClientRequestHadler(EndPoint serverEndPoint, SocketSetting setting, IRemoteProtocol remoteProtocol)
        {
            this.remoteProtocol = remoteProtocol;
            if (this.remoteProtocol == null)
            {
                throw new ArgumentNullException("remoteProtocol", "remoteProtocol is null");
            }

            this.all    = new ConcurrentDictionary <ulong, CurrentRequestTaskCompletion>();
            this.client = new ClientSocket(setting, new SocketBufferProvider(setting), serverEndPoint);
            this.client.OnMessageReceived    += Client_OnMessageReceived;
            this.client.OnConnectionAccepted += (s, e) => { this.OnConnectionAccepted?.Invoke(s, e); };
            this.client.OnConnectionClosed   += (s, e) => { this.OnConnectionClosed?.Invoke(s, e); };
        }
示例#18
0
        /// <summary>
        ///
        /// </summary>
        public ClientSocket(SocketSetting setting, EndPoint serverEndPoint, EndPoint localEndPoint = null)
        {
            this.serverEndPoint = serverEndPoint;
            this.localEndPoint  = localEndPoint;
            this.eventHandlers  = new List <ResultEventHandler <OnReceivedSocketEventArgs, byte[]> >();
            this.socket         = new System.Net.Sockets.Socket(System.Net.Sockets.AddressFamily.InterNetwork, System.Net.Sockets.SocketType.Stream, System.Net.Sockets.ProtocolType.Tcp)
            {
                ReceiveBufferSize = setting.ReceiveBufferSize,
                SendBufferSize    = setting.SendBufferSize,
                //NoDelay = true,
                //Blocking = true,
            };

            //用来控制开始连接超时检查
            this.manualResetEvent = new System.Threading.ManualResetEvent(false);
        }
示例#19
0
        public SocketRemotingClient(EndPoint serverEndPoint, SocketSetting setting = null, EndPoint localEndPoint = null)
        {
            Ensure.NotNull(serverEndPoint, "serverEndPoint");

            _serverEndPoint                   = serverEndPoint;
            _localEndPoint                    = localEndPoint;
            _setting                          = setting ?? new SocketSetting();
            _receiveDataBufferPool            = new BufferPool(_setting.ReceiveDataBufferSize, _setting.ReceiveDataBufferPoolSize);
            _clientSocket                     = new ClientSocket(_serverEndPoint, _localEndPoint, _setting, _receiveDataBufferPool, HandleServerMessage);
            _responseFutureDict               = new ConcurrentDictionary <long, ResponseFuture>();
            _replyMessageQueue                = new BlockingCollection <byte[]>(new ConcurrentQueue <byte[]>());
            _responseHandlerDict              = new Dictionary <int, IResponseHandler>();
            _remotingServerMessageHandlerDict = new Dictionary <int, IRemotingServerMessageHandler>();
            _connectionEventListeners         = new List <IConnectionEventListener>();
            _scheduleService                  = DependencyManage.Resolve <IScheduleService>();

            RegisterConnectionEventListener(new ConnectionEventListener(this));
        }
示例#20
0
        public SocketRemotingClient(EndPoint serverEndPoint, SocketSetting setting = null, EndPoint localEndPoint = null)
        {
            Ensure.NotNull(serverEndPoint, "serverEndPoint");

            _serverEndPoint = serverEndPoint;
            _localEndPoint = localEndPoint;
            _setting = setting ?? new SocketSetting();
            _receiveDataBufferPool = new BufferPool(_setting.ReceiveDataBufferSize, _setting.ReceiveDataBufferPoolSize);
            _clientSocket = new ClientSocket(_serverEndPoint, _localEndPoint, _setting, _receiveDataBufferPool, HandleReplyMessage);
            _responseFutureDict = new ConcurrentDictionary<long, ResponseFuture>();
            _replyMessageQueue = new BlockingCollection<byte[]>(new ConcurrentQueue<byte[]>());
            _responseHandlerDict = new Dictionary<int, IResponseHandler>();
            _connectionEventListeners = new List<IConnectionEventListener>();
            _scheduleService = ObjectContainer.Resolve<IScheduleService>();
            _logger = ObjectContainer.Resolve<ILoggerFactory>().Create(GetType().FullName);

            RegisterConnectionEventListener(new ConnectionEventListener(this));
        }
示例#21
0
        public SocketRemotingClient(EndPoint serverEndPoint, SocketSetting setting = null, EndPoint localEndPoint = null)
        {
            serverEndPoint.CheckNotNull("serverEndPoint");

            _serverEndPoint           = serverEndPoint;
            _localEndPoint            = localEndPoint;
            _setting                  = setting ?? new SocketSetting();
            _receiveDataBufferPool    = new BufferPool(_setting.ReceiveDataBufferSize, _setting.ReceiveDataBufferPoolSize);
            _clientSocket             = new ClientSocket(_serverEndPoint, _localEndPoint, _setting, _receiveDataBufferPool, HandleReplyMessage);
            _responseFutureDict       = new ConcurrentDictionary <long, ResponseFuture>();
            _replyMessageQueue        = new BlockingCollection <byte[]>(new ConcurrentQueue <byte[]>());
            _responseHandlerDict      = new Dictionary <int, IResponseHandler>();
            _connectionEventListeners = new List <IConnectionEventListener>();
            _scheduleService          = IocManager.Instance.Resolve <IScheduleService>();
            _logger = IocManager.Instance.Resolve <ILoggerFactory>().Create(GetType().FullName);

            RegisterConnectionEventListener(new ConnectionEventListener(this));
        }
示例#22
0
 public ConsumerSetting()
 {
     BrokerAddress                              = new IPEndPoint(SocketUtils.GetLocalIPV4(), 5001);
     BrokerAdminAddress                         = new IPEndPoint(SocketUtils.GetLocalIPV4(), 5002);
     SocketSetting                              = new SocketSetting();
     RebalanceInterval                          = 1000;
     HeartbeatBrokerInterval                    = 1000;
     UpdateTopicQueueCountInterval              = 1000;
     SendConsumerOffsetInterval                 = 1000;
     PullMessageFlowControlThreshold            = 1000;
     PullMessageFlowControlStepPercent          = 1;
     PullMessageFlowControlStepWaitMilliseconds = 1;
     SuspendPullRequestMilliseconds             = 60 * 1000;
     PullRequestTimeoutMilliseconds             = 70 * 1000;
     RetryMessageInterval                       = 1000;
     PullMessageBatchSize                       = 32;
     ConsumeFromWhere                           = ConsumeFromWhere.LastOffset;
     MessageHandleMode                          = MessageHandleMode.Parallel;
 }
示例#23
0
 public ConsumerSetting()
 {
     BrokerAddress                     = new IPEndPoint(SocketUtils.GetLocalIPV4(), 5001);
     BrokerAdminAddress                = new IPEndPoint(SocketUtils.GetLocalIPV4(), 5002);
     SocketSetting                     = new SocketSetting();
     ConsumeThreadMaxCount             = Environment.ProcessorCount * 2;
     DefaultTimeoutMilliseconds        = 60 * 1000;
     RebalanceInterval                 = 1000;
     HeartbeatBrokerInterval           = 1000;
     UpdateTopicQueueCountInterval     = 1000;
     PersistConsumerOffsetInterval     = 1000;
     PullThresholdForQueue             = 100000;
     PullTimeDelayMillsWhenFlowControl = 3000;
     SuspendPullRequestMilliseconds    = 60 * 1000;
     PullRequestTimeoutMilliseconds    = 70 * 1000;
     RetryMessageInterval              = 3000;
     PullMessageBatchSize              = 32;
     ConsumeFromWhere                  = ConsumeFromWhere.LastOffset;
 }
        public SocketRemotingClient(string name, EndPoint serverEndPoint, SocketSetting setting = null, EndPoint localEndPoint = null)
        {
            Ensure.NotNull(serverEndPoint, "serverEndPoint");

            Name                 = name;
            ServerEndPoint       = serverEndPoint;
            LocalEndPoint        = localEndPoint;
            _setting             = setting ?? new SocketSetting();
            BufferPool           = new BufferPool(_setting.ReceiveDataBufferSize, _setting.ReceiveDataBufferPoolSize);
            ClientSocket         = new ClientSocket(name, ServerEndPoint, LocalEndPoint, _setting, BufferPool, HandleServerMessage);
            _responseFutureDict  = new ConcurrentDictionary <long, ResponseFuture>();
            _replyMessageQueue   = new BlockingCollection <byte[]>(new ConcurrentQueue <byte[]>());
            _responseHandlerDict = new Dictionary <int, IResponseHandler>();
            _remotingServerMessageHandlerDict = new Dictionary <int, IRemotingServerMessageHandler>();
            _connectionEventListeners         = new List <IConnectionEventListener>();
            _scheduleService = ObjectContainer.Resolve <IScheduleService>();
            _logger          = ObjectContainer.Resolve <ILoggerFactory>().Create(GetType().FullName);

            RegisterConnectionEventListener(new ConnectionEventListener(this));
        }
示例#25
0
 public BrokerSetting()
 {
     ProducerSocketSetting = new SocketSetting { Address = SocketUtils.GetLocalIPV4().ToString(), Port = 5000, Backlog = 5000 };
     ConsumerSocketSetting = new SocketSetting { Address = SocketUtils.GetLocalIPV4().ToString(), Port = 5001, Backlog = 5000 };
     NotifyWhenMessageArrived = true;
 }
示例#26
0
 public MainService(IOptions <SocketSetting> socket, ILoggerFactory loggerFactory)
 {
     SocketSetting = socket.Value;
     logger        = loggerFactory.CreateLogger <MainService>();
 }
示例#27
0
        public static IEnumerable <SocketRemotingClient> ToRemotingClientList(this IEnumerable <IPEndPoint> endpointList, SocketSetting socketSetting)
        {
            var remotingClientList = new List <SocketRemotingClient>();

            foreach (var endpoint in endpointList)
            {
                var remotingClient = new SocketRemotingClient(endpoint, socketSetting);
                remotingClientList.Add(remotingClient);
            }
            return(remotingClientList);
        }
示例#28
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="listeningEndPoint"></param>
        /// <param name="setting"></param>
        /// <param name="responseHandler"></param>
        /// <param name="Protocol"></param>
        public ServerRequestHandler(EndPoint listeningEndPoint, IResponseHandler responseHandler, SocketSetting setting, IRemoteProtocol Protocol)
        {
            this.Protocol = Protocol;
            if (this.Protocol == null)
            {
                throw new ArgumentNullException("Protocol", "Protocol is null");
            }

            this.Socket = new ServerSocket(setting, new SocketBufferProvider(setting), listeningEndPoint);
            this.Socket.OnMessageReceived    += Service_OnMessageReceived;
            this.Socket.OnConnectionAccepted += (s, e) => { this.OnConnectionAccepted?.Invoke(s, e); };
            this.Socket.OnConnectionClosed   += (s, e) => { this.OnConnectionClosed?.Invoke(s, e); };
            this.ResponseHandler              = responseHandler;
        }