Beispiel #1
0
 public ConsumerConnector(String stateStorageDirectory, String brokerAddress, BrokerInfoResponse configuration, ZMQ.Context context)
 {
     _stateStorageDirectory = stateStorageDirectory;
     _brokerAddress         = brokerAddress;
     _configuration         = configuration;
     _context = context;
 }
Beispiel #2
0
 public ConsumerMessageStream(String stateStorageDirectory, String brokerAddress, BrokerInfoResponse configuration, ZMQ.Context context)
 {
     _stateStorageDirectory = stateStorageDirectory;
     _brokerAddress         = brokerAddress;
     _configuration         = configuration;
     _context = context;
     Messages = new ConcurrentQueue <Tuple <Int32, Message> >();
 }
Beispiel #3
0
        public Consumer(String brokerAddress)
        {
            _context = _sharedContext;
            _address = brokerAddress;

            _sender       = new RequestSender(_address, ZMQ.SocketType.REQ, _context.ZmqContext);
            _infoResponse = _sender.Send(new BrokerInfoRequest()) as BrokerInfoResponse;

            if (_infoResponse == null)
            {
                throw new Exception("Cannot create producer, because broker info request was unsuccessfull");
            }
        }
Beispiel #4
0
        /// <summary>
        /// Constructs Producer with specified broker address
        /// </summary>
        public Producer(String brokerAddress)
        {
            _brokerAddress = brokerAddress;
            _sender        = new RequestSender(_brokerAddress, ZMQ.SocketType.REQ, _context.ZmqContext);
            _infoResponse  = _sender.Send(new BrokerInfoRequest()) as BrokerInfoResponse;

            if (_infoResponse == null)
            {
                throw new Exception("Cannot create producer, because broker info request was unsuccessfull");
            }

            var pullAddress = String.Format("{0}:{1}", _infoResponse.HostName, _infoResponse.PullPort);

            _pushSender = new RequestSender(pullAddress, ZMQ.SocketType.PUSH, _context.ZmqContext);
        }
Beispiel #5
0
        public Response HandleBrokerInfo(BinaryStream stream)
        {
            // Not used for now
            var request = BrokerInfoRequest.ReadFromStream(stream);

            var response = new BrokerInfoResponse();

            response.HostName                   = _configuration.HostName;
            response.BrokerId                   = _configuration.BrokerId;
            response.PullPort                   = _configuration.PullPort;
            response.NumberOfPartitions         = _configuration.NumberOfPartitions;
            response.NumberOfPartitionsPerTopic = _configuration.NumberOfPartitionsPerTopic;

            return(response);
        }
Beispiel #6
0
        private Response Send(Request request, bool responseAvailable)
        {
            using (var memoryStream = new BinaryMemoryStream())
            {
                memoryStream.Writer.Write((short)request.RequestType);
                request.WriteToStream(memoryStream);
                var data = memoryStream.ToArray();
                _socket.Send(data);
            }

            if (!responseAvailable)
            {
                return(null);
            }

            var result = _socket.Recv();

            using (var stream = new BinaryMemoryStream(result))
            {
                var responseType = (ResponseType)stream.Reader.ReadInt16();

                switch (responseType)
                {
                case ResponseType.BrokerInfoResponse:
                    return(BrokerInfoResponse.ReadFromStream(stream));

                case ResponseType.FetchResponse:
                    return(FetchResponse.ReadFromStream(stream));

                case ResponseType.MultiFetchResponse:
                    return(MultiFetchResponse.ReadFromStream(stream));
                }

                return(null);
            }
        }