zoukankan      html  css  js  c++  java
  • RabbitMQ 一个demo

    Code:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading;
    using System.Threading.Tasks;
    using RabbitMQ.Client;
    using RabbitMQ.Client.Events;
    using System.IO;
    
    
    namespace ConsoleDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
                //step1 
                new Thread(Provider.Write).Start();
                new Thread(Provider.Write).Start();
                new Thread(Provider.Write).Start();
    
                //step2(写入不能多线程,会冲突)
                new Thread(Consumer.Read).Start();
            }
        }
    
        public class Provider
        {
            public static void Write()
            {
                var factory = new ConnectionFactory() { HostName = "localhost", UserName = "qhong", Password = "hongdada", };
                using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue: "writeLog", durable: false, exclusive: false, autoDelete: false, arguments: null);
                    for (int i = 0; i < 1994; i++)
                    {
                        string message = i.ToString();
                        var body = Encoding.UTF8.GetBytes(message);
    
                        channel.BasicPublish(exchange: "", routingKey: "writeLog", basicProperties: null, body: body);
                        Console.WriteLine("Program Sent {0}", message);
                    }
                }
            }
        }
    
        public class Consumer
        {
            public static void Read()
            {
                var factory = new ConnectionFactory() { HostName = "localhost", UserName = "qhong", Password = "hongdada", VirtualHost = "/" };
                using (var connection = factory.CreateConnection())
                using (var channel = connection.CreateModel())
                {
                    channel.QueueDeclare(queue: "writeLog",
                                         durable: false,
                                         exclusive: false,
                                         autoDelete: false,
                                         arguments: null);
    
                    var consumer = new EventingBasicConsumer(channel);
                    consumer.Received += (model, ea) =>
                    {
                        var body = ea.Body;
                        var message = Encoding.UTF8.GetString(body);
                        ExcuateWriteFile(message);
                        Console.WriteLine(" Receiver Received {0}", message);
                    };
                    channel.BasicConsume(queue: "writeLog",
                                         noAck: true,
                                         consumer: consumer);
    
                    Console.WriteLine(" Press [enter] to exit.");
                    Console.ReadLine();
                }
            }
            public static void ExcuateWriteFile(string i)
            {
                using (FileStream fs = new FileStream(@"d:\test.txt", FileMode.Append))
                {
                    using (StreamWriter sw = new StreamWriter(fs, Encoding.Unicode))
                    {
                        sw.WriteLine(i);
                    }
                }
            }
        }
    }

    分成2步执行,第一步生产者往队列里面添加数据

    第二步,消费者读取队列里面的数据并写入文件test.txt

    http://www.cnblogs.com/ericli-ericli/p/5917018.html

    http://www.cnblogs.com/piaolingzxh/p/5448927.html

  • 相关阅读:
    22.渐进式框架的理解
    21、Vue组件间通信6种方式(网上找视频看)
    20、vue中如何使用event对象
    19.vue组件中data为什么必须是一个函数
    18、Vue.js中this.$nextTick()的使用
    17.v-on可以监听多个方法吗
    16.分别简述computed和watch的使用场景
    15. 请说出vue.cli项目中src目录每个文件夹和文件的用法
    13、vue中v-model的应用及使用详解(看链接)
    eclipse编码问题
  • 原文地址:https://www.cnblogs.com/hongdada/p/7049861.html
Copyright © 2011-2022 走看看