Exemple #1
0
        public void UnSubscribe()
        {
            WaitClientRunning();
            if (!_running)
            {
                return;
            }

            try
            {
                var unsub = new Unsub()
                {
                    Destination = _clientIdentity.Destination,
                    ClientId    = _clientIdentity.ClientId.ToString(),
                };
                var pack = new Packet()
                {
                    Type = PacketType.Unsubscription,
                    Body = unsub.ToByteString()
                }.ToByteArray();
                WriteWithHeader(pack);
                var p   = Packet.Parser.ParseFrom(ReadNextPacket());
                var ack = Com.Alibaba.Otter.Canal.Protocol.Ack.Parser.ParseFrom(p.Body);
                if (ack.ErrorCode > 0)
                {
                    throw new CanalClientException($"failed to unSubscribe with reason: {ack.ErrorMessage}");
                }
            }
            catch (IOException e)
            {
                throw new CanalClientException(e.Message, e);
            }
        }
        public async Task UnSubscribe_ShouldBe_Success()
        {
            InitClient();
            await HandShake_ShouldBe_Success();
            await Auth_ShouldBe_Success();
            await Subscribe_ShouldBe_Success();

            var data = new Unsub()
            {
                Destination = Settings.Destination,
                ClientId    = Settings.ClientId,
                Filter      = string.IsNullOrEmpty(Settings.Filter) ? ".*\\..*" : Settings.Filter
            };

            var pack = new Packet()
            {
                Type = PacketType.Subscription,
                Body = data.ToByteString()
            }.ToByteArray();

            await _client.WritePacketAsync(pack);

            var p = await _client.ReadPacketAsync();

            p.ValidateAck();
        }
Exemple #3
0
        /// <summary>
        /// UnSubscribe. If you need to unsubscribe, you should stop receiving data first.
        /// </summary>
        /// <param name="filter">UnSubscribe filter(Optional, default value is '.*\\..*')</param>
        /// <returns></returns>
        public async Task UnSubscribeAsync(string filter = ".*\\..*")
        {
            ValidateState(ConnectionState.Subscribed, nameof(UnSubscribeAsync));

            //Unsub data
            var data = new Unsub()
            {
                Destination = _options.Destination,
                ClientId    = _options.ClientId,
                Filter      = filter
            };

            var pack = new Packet()
            {
                Type = PacketType.Subscription,
                Body = data.ToByteString()
            }.ToByteArray();

            await _client.WritePacketAsync(pack);

            var p = await _client.ReadPacketAsync();

            p.ValidateAck();

            SetConnectionState(ConnectionState.Unsubscribed);

            _logger.LogInformation($"UnSubscribe {filter} success.");
        }