NetMQ使用——发布订阅模式 Publisher-Subscriber

发布者

        readonly static ManualResetEvent _terminateEvent = new ManualResetEvent(false);
        /// <summary>
        /// NetMQ 发布端
        /// </summary>
        public static void Start()
        {
            string[] weathers = new string[6] { "晴朗", "多云", "阴天", "", "", "" };

            Console.WriteLine("发布多个地区天气预报:");

            using (var pub = new PublisherSocket())
            {
                pub.Connect("tcp://127.0.0.1:55555");

                    var rng = new Random();
                    string msg;
                    int sleeptime = 1000;//1秒

                    ///指定发布的时间间隔,1秒
                    while (_terminateEvent.WaitOne(1000) == false)
                    {
                        //随机生成天气数据
                        int zipcode = rng.Next(0, 99);
                        int temperature = rng.Next(-50, 50);
                        int weatherId = rng.Next(0, 5);
                    msg = string.Format("{0} {1} {2}", zipcode, temperature, weathers[weatherId]);
                    //pub.SendMoreFrame(weathers[weatherId]).SendFrame(msg);

                    pub.SendFrame(msg);

                    Console.WriteLine(msg);
                        Thread.Sleep(sleeptime);
                    }
             
            }
        }

订阅者:

 

  using (var sub = new SubscriberSocket())
                {
                    sub.Options.ReceiveHighWatermark = 1000;
                    sub.Connect("tcp://127.0.0.1:12345");
                    //sub.Subscribe("晴朗");//空字符串表示订阅所有,仅订阅“AAA”:sub.Subscribe("AAA");这时第一次ReceiveString()将返回“AAA”,之后才是真正的消息。
                    sub.Subscribe("");
                    while (true)
                    {
                        string results = sub.ReceiveFrameString();
                        //sub.SendFrame(results);
                        Console.WriteLine(results);

                    }
                }

注意:订阅者必须选使用           sub.Subscribe("");

 

使用多个订阅者要更改连接方式

    using (var pub = new PublisherSocket("@tcp://127.0.0.1:12345"))

  using (var sub = new SubscriberSocket(">tcp://127.0.0.1:12345"))

转载于:https://www.cnblogs.com/yyl001/p/11213340.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值