Beispiel #1
0
        private void Consumer_Received(object sender, BasicDeliverEventArgs e)
        {
            RemoteKey remoteKey = Extension.ObjectExtension.Deserialize <RemoteKey>(e.Body.ToArray());

            //RemoteKey remoteKey = Extension.ObjectExtension.Deserialize<RemoteKey>(e.Body);
            if (remoteKey.Guid != guid)
            {
                CacheSynchronizingEventArgs cacheSynchronizingEventArgs = new CacheSynchronizingEventArgs()
                {
                    Key = remoteKey.Key
                };
                OnSynchronizing?.Invoke(sender, cacheSynchronizingEventArgs);
                if (!cacheSynchronizingEventArgs.Cancel)
                {
                    memoryCache.Remove(remoteKey.Key);
                    if (keyMapDictionary.ContainsKey(remoteKey.Key))
                    {
                        memoryCache.Remove(keyMapDictionary[remoteKey.Key]);
                    }
                    OnSynchronized?.Invoke(sender, new CacheSynchronizedEventArgs()
                    {
                        Key = remoteKey.Key
                    });
                }
            }
            ((EventingBasicConsumer)sender).Model.BasicAck(deliveryTag: e.DeliveryTag, multiple: true);
        }
Beispiel #2
0
        void ICache.Remove(string key)
        {
            memoryCache.Remove(key);
            RemoteKey remoteKey = new RemoteKey()
            {
                Key = key, Guid = guid
            };

            channel.BasicPublish(exchange: exchangeName, routingKey: cacheRemoveRoutingName, basicProperties: null, body: Extension.ObjectExtension.Serialize(remoteKey));
        }