コード例 #1
0
 public ONSBaseConsumer(string topic, string consumerId, PushConsumer consumer, Type classType)
 {
     ClassType  = classType;
     Type       = ONSMessageType.BASE.ToString();
     Topic      = topic;
     ConsumerId = consumerId;
     _consumer  = consumer;
     TagList    = new List <string>();
 }
コード例 #2
0
ファイル: RocketMQPushConsumer.cs プロジェクト: Aqmic/Dcp.Lib
 /// <summary>
 ///     消费订阅
 /// </summary>
 /// <param name="listen">消息监听处理</param>
 /// <param name="subExpression">标签</param>
 public void Start(MessageListener listen, string subExpression = "*")
 {
     if (_consumer != null)
     {
         throw new DcpException("当前已开启过该消费,无法重新开启,需先关闭上一次的消费(调用Close())。");
     }
     _consumer = ONSFactory.getInstance().createPushConsumer(_factoryInfo);
     _consumer.subscribe(_factoryInfo.getPublishTopics(), subExpression, listen);
     _consumer.start();
 }
コード例 #3
0
        public virtual PushConsumer createPushConsumer(ONSFactoryProperty factoryProperty)
        {
            global::System.IntPtr cPtr = ONSClient4CPPPINVOKE.ONSFactoryAPI_createPushConsumer(swigCPtr, ONSFactoryProperty.getCPtr(factoryProperty));
            PushConsumer          ret  = (cPtr == global::System.IntPtr.Zero) ? null : new PushConsumer(cPtr, false);

            if (ONSClient4CPPPINVOKE.SWIGPendingException.Pending)
            {
                throw ONSClient4CPPPINVOKE.SWIGPendingException.Retrieve();
            }
            return(ret);
        }
コード例 #4
0
        public override void Start()
        {
            if (this.listener == null)
            {
                throw new NotFoundMessageListenerException();
            }

            consumer = ONSFactory.getInstance().createPushConsumer(this.FactoryProperty);
            consumer.subscribe(Topic, SubExpression, listener);
            consumer.start();
        }
コード例 #5
0
ファイル: OnsConsumer-new.cs プロジェクト: sztony/AliMQ
        /// <summary>
        /// 启动消息消费客户端
        /// </summary>
        public static void StartPushConsumer(string regionID, string accessKey, string secretKey, string topicID, string consumerID)
        {
            PushConsumer _consumer = ONSFactory.getInstance().createPushConsumer(getFactoryProperty(accessKey, secretKey, topicID, consumerID));

            _consumer.subscribe(topicID, "*", new ConsumerListener(consumerID));
            _consumer.start();

            ConsumerParam consumerParam = new ConsumerParam()
            {
                Ons_RegionID  = regionID,
                Ons_AccessKey = accessKey,
                Ons_SecretKey = secretKey,
                TopicID       = topicID,
                ConsumerID    = consumerID
            };

            _Consumer_TopicDict.Add(consumerID + String_Splite_Char + topicID, _consumer);

            //MyTimer watchConsumerAccumulate = new MyTimer();
            //watchConsumerAccumulate.Elapsed += ConsumerAccumulateEvent;
            //watchConsumerAccumulate.OnsConsumerParam = consumerParam;
            //watchConsumerAccumulate.Interval = 3000;
            //watchConsumerAccumulate.Start();
        }
コード例 #6
0
ファイル: RocketMQPushConsumer.cs プロジェクト: Aqmic/Dcp.Lib
 /// <summary>
 ///     关闭订阅消费
 /// </summary>
 public void Close()
 {
     _consumer?.shutdown();
     _consumer = null;
 }
コード例 #7
0
 public static void  CreatePushConsumer()
 {
     _consumer = ONSFactory.getInstance().createPushConsumer(getFactoryProperty());
 }
コード例 #8
0
ファイル: AliyunConsumer.cs プロジェクト: zzms/Distributed
 public AliyunConsumer(PushConsumer consumer)
 {
     _consumer = consumer;
 }
コード例 #9
0
 public void InitializeNormalConsumer()
 {
     consumer = ONSFactory.getInstance().createPushConsumer(factoryInfo);
 }
コード例 #10
0
        /// <summary>
        /// 初始化属性
        /// </summary>
        static void InitializeProperties()
        {
            //实例化生产者的服务类列表
            ONSProducerServiceList = new List <object>();
            //实例化消费者的服务类列表
            ONSConsumerServiceList = new List <object>();
            //实例化生产者列表
            ONSProducerList = new List <IONSProducer>();
            //实例化消费者列表
            ONSConsumerList = new List <IONSConsumer>();
            //实例化Executer方法对应的委托实例字典
            ExecuterMethodDictionary = new ConcurrentDictionary <string, MethodInfo>();
            //实例化Checker方法对应的委托实例字典
            CheckerMethodDictionary = new ConcurrentDictionary <string, MethodInfo>();



            //*
            //获取当前应用域下的所有程序集
            Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
            //找出所有程序集下带有[ONSConsumer]特性的所有方法,并放入自定义消费者方法列表中
            if (assemblies != null)
            {
                foreach (Assembly assembly in assemblies)
                {
                    Type[] types = assembly.GetTypes();
                    if (types != null)
                    {
                        foreach (Type type in types)
                        {
                            if (type.BaseType != null)
                            {
                                if (type.BaseType.FullName != null)
                                {
                                    //获取当前应用作为"事务"类型生产者的相关信息
                                    CreateProducer <AbstractTranProducerService <object> >(assembly, type, ONSMessageType.TRAN, (onsProducerFactoryProperty, topic, producerId) =>
                                    {
                                        //实例化ONSLocalTransactionChecker
                                        ONSLocalTransactionChecker checker = new ONSLocalTransactionChecker();
                                        //实例化TransactionProducer
                                        TransactionProducer transactionProducer = ONSFactory.getInstance().createTransactionProducer(onsProducerFactoryProperty, checker);
                                        //实例化代理类ONSTransactionProducer
                                        return(new ONSTranProducer(topic, producerId, transactionProducer));
                                    });

                                    ////获取当前应用作为"顺序"类型生产者的相关信息
                                    //CreateProducer<AbstractOrderProducerService<object>>(assembly, type, ONSMessageType.ORDER, (onsProducerFactoryProperty, topic, producerId) =>
                                    //{
                                    //    //实例化OrderProducer
                                    //    OrderProducer orderProducer = ONSFactory.getInstance().createOrderProducer(onsProducerFactoryProperty);
                                    //    //实例化代理类ONSOrderProducer
                                    //    return new ONSOrderProducer(topic, producerId, orderProducer);
                                    //});

                                    ////获取当前应用作为"普通"类型生产者的相关信息
                                    //CreateProducer<AbstractBaseProducerService<object>>(assembly, type, ONSMessageType.BASE, (onsProducerFactoryProperty, topic, producerId) =>
                                    //{
                                    //    //实例化Producer
                                    //    Producer baseProducer = ONSFactory.getInstance().createProducer(onsProducerFactoryProperty);
                                    //    //实例化代理类ONSProducer
                                    //    return new ONSBaseProducer(topic, producerId, baseProducer);
                                    //});

                                    //获取当前应用作为"事务"类型消费者的相关信息
                                    CreateConsumer <AbstractTranConsumerService <object> >(assembly, type, ONSMessageType.TRAN, (onsConsumerFactoryProperty, topic, consumerId, classType) =>
                                    {
                                        //实例化PushConsumer
                                        PushConsumer pushConsumer = ONSFactory.getInstance().createPushConsumer(onsConsumerFactoryProperty);
                                        //实例化代理类ONSTransactionConsumer
                                        return(new ONSTranConsumer(topic, consumerId, pushConsumer, classType));
                                    });

                                    //获取当前应用作为"顺序"类型消费者的相关信息
                                    CreateConsumer <AbstractOrderConsumerService <object> >(assembly, type, ONSMessageType.ORDER, (onsConsumerFactoryProperty, topic, consumerId, classType) =>
                                    {
                                        //实例化OrderConsumer
                                        OrderConsumer orderConsumer = ONSFactory.getInstance().createOrderConsumer(onsConsumerFactoryProperty);
                                        //实例化代理类ONSOrderConsumer
                                        return(new ONSOrderConsumer(topic, consumerId, orderConsumer, classType));
                                    });

                                    //获取当前应用作为"普通"类型消费者的相关信息
                                    CreateConsumer <AbstractBaseConsumerService <object> >(assembly, type, ONSMessageType.BASE, (onsConsumerFactoryProperty, topic, consumerId, classType) =>
                                    {
                                        //实例化PushConsumer
                                        PushConsumer pushConsumer = ONSFactory.getInstance().createPushConsumer(onsConsumerFactoryProperty);
                                        //实例化代理类ONSTransactionConsumer
                                        return(new ONSBaseConsumer(topic, consumerId, pushConsumer, classType));
                                    });
                                }
                            }
                        }
                    }
                }
            }
            //*/
        }
コード例 #11
0
        /// <summary>
        /// 初始化属性
        /// </summary>
        static void InitializeProperties()
        {
            //实例化生产者的服务类列表
            ONSProducerServiceList = new List <object>();
            //实例化消费者的服务类列表
            ONSConsumerServiceList = new List <object>();
            //实例化生产者列表
            ONSProducerList = new List <IONSProducer>();
            //实例化消费者列表
            ONSConsumerList = new List <IONSConsumer>();
            //实例化Executer方法对应的委托实例字典
            ExecuterMethodDictionary = new ConcurrentDictionary <string, MethodInfo>();
            //实例化Checker方法对应的委托实例字典
            CheckerMethodDictionary = new ConcurrentDictionary <string, MethodInfo>();



            //*
            //获取当前应用域下的所有程序集
            Assembly[] assemblies = AppDomain.CurrentDomain.GetAssemblies();
            //找出所有程序集下带有[ONSConsumer]特性的所有方法,并放入自定义消费者方法列表中
            if (assemblies != null)
            {
                foreach (Assembly assembly in assemblies)
                {
                    Type[] types = null;
                    try
                    {
                        types = assembly.GetTypes();
                    }
                    catch (Exception e)
                    {
                        //通过vs2017编译后反射会报错,需要捕捉错误。忽略此处错误即可
                        //Microsoft.Build.Tasks.CodeAnalysis, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
                        //尝试获取所有类时发生异常

                        /*
                         * string body = assembly.FullName + "尝试获取所有类时发生异常:" + e.ToString();
                         * SendDebugMail("ONSHelper.InitializeProperties方法反射时捕获异常", body);
                         * //*/
                    }

                    if (types != null)
                    {
                        //*
                        foreach (Type type in types)
                        {
                            if (type.BaseType != null)
                            {
                                if (type.BaseType.FullName != null)
                                {
                                    //原本事务消息是需要自动注册,因为ProducerService必须开发者自己实现。但是在2019年01月23日大更新后,老SDK在生成Producer时不再需要输入ProducerId了,但是TranProducer实例化时会报错。因此这里禁用事务消息功能。

                                    //获取当前应用作为"事务"类型生产者的相关信息
                                    CreateProducer <AbstractTranProducerService <object> >(assembly, type, ONSMessageType.TRAN, (onsProducerFactoryProperty, topic, producerId) =>
                                    {
                                        //实例化ONSLocalTransactionChecker
                                        ONSLocalTransactionChecker checker = new ONSLocalTransactionChecker();
                                        //实例化TransactionProducer
                                        TransactionProducer transactionProducer = ONSFactory.getInstance().createTransactionProducer(onsProducerFactoryProperty, checker);
                                        //实例化代理类ONSTransactionProducer
                                        return(new ONSTranProducer(topic, producerId, transactionProducer));
                                    });

                                    ////获取当前应用作为"顺序"类型生产者的相关信息
                                    //CreateProducer<AbstractOrderProducerService<object>>(assembly, type, ONSMessageType.ORDER, (onsProducerFactoryProperty, topic, producerId) =>
                                    //{
                                    //    //实例化OrderProducer
                                    //    OrderProducer orderProducer = ONSFactory.getInstance().createOrderProducer(onsProducerFactoryProperty);
                                    //    //实例化代理类ONSOrderProducer
                                    //    return new ONSOrderProducer(topic, producerId, orderProducer);
                                    //});

                                    ////获取当前应用作为"普通"类型生产者的相关信息
                                    //CreateProducer<AbstractBaseProducerService<object>>(assembly, type, ONSMessageType.BASE, (onsProducerFactoryProperty, topic, producerId) =>
                                    //{
                                    //    //实例化Producer
                                    //    Producer baseProducer = ONSFactory.getInstance().createProducer(onsProducerFactoryProperty);
                                    //    //实例化代理类ONSProducer
                                    //    return new ONSBaseProducer(topic, producerId, baseProducer);
                                    //});

                                    //获取当前应用作为"事务"类型消费者的相关信息
                                    CreateConsumer <AbstractTranConsumerService <object> >(assembly, type, ONSMessageType.TRAN, (onsConsumerFactoryProperty, topic, consumerId, classType) =>
                                    {
                                        //实例化PushConsumer
                                        PushConsumer pushConsumer = ONSFactory.getInstance().createPushConsumer(onsConsumerFactoryProperty);
                                        //实例化代理类ONSTransactionConsumer
                                        return(new ONSTranConsumer(topic, consumerId, pushConsumer, classType));
                                    });

                                    //获取当前应用作为"顺序"类型消费者的相关信息
                                    CreateConsumer <AbstractOrderConsumerService <object> >(assembly, type, ONSMessageType.ORDER, (onsConsumerFactoryProperty, topic, consumerId, classType) =>
                                    {
                                        //实例化OrderConsumer
                                        OrderConsumer orderConsumer = ONSFactory.getInstance().createOrderConsumer(onsConsumerFactoryProperty);
                                        //实例化代理类ONSOrderConsumer
                                        return(new ONSOrderConsumer(topic, consumerId, orderConsumer, classType));
                                    });

                                    //获取当前应用作为"普通"类型消费者的相关信息
                                    CreateConsumer <AbstractBaseConsumerService <object> >(assembly, type, ONSMessageType.BASE, (onsConsumerFactoryProperty, topic, consumerId, classType) =>
                                    {
                                        //实例化PushConsumer
                                        PushConsumer pushConsumer = ONSFactory.getInstance().createPushConsumer(onsConsumerFactoryProperty);
                                        //实例化代理类ONSTransactionConsumer
                                        return(new ONSBaseConsumer(topic, consumerId, pushConsumer, classType));
                                    });
                                }
                            }
                        }
                        //*/
                    }
                }
            }
            //*/
        }
コード例 #12
0
 public AliyunConsumer(PushConsumer consumer)
 {
     _consumer = consumer;
 }
コード例 #13
0
 internal static global::System.Runtime.InteropServices.HandleRef getCPtr(PushConsumer obj)
 {
     return((obj == null) ? new global::System.Runtime.InteropServices.HandleRef(null, global::System.IntPtr.Zero) : obj.swigCPtr);
 }