zoukankan      html  css  js  c++  java
  • RabbitMQ框架学写笔记-20161201

    1.RabbitMQ NUget .Net客户端4.1.1版本 对应的 .netframework版本是 4.5.1 以及以上

    2.本地实现的效果图

    3.实践代码:

    P-生产者:

    using RabbitMQ.Client;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace RabbitMQClient
    {
        /// <summary>
        /// RabbitMQ的Topic
        /// </summary>
        class Program
        {
    
            private readonly static ConnectionFactory rabbitMqFactory = new ConnectionFactory()
            {
                HostName = "127.0.0.1",
                UserName = "---",
                Password = "514600",
                Port = 5672
            };
    
            /// <summary>
            /// 路由名称
            /// </summary>
            const string TopExchangeName = "topic.justin.exchange";
    
            const string TopQueueName = "topic.justin.queue";
    
            public static void TopicExchangeSendMsg()
            {
                using(IConnection conn=rabbitMqFactory.CreateConnection())
                {
                    using(IModel channel = conn.CreateModel())
                    {
                        channel.ExchangeDeclare(TopExchangeName,"topic",durable:true,autoDelete:false,arguments:null);
                        channel.QueueDeclare(TopQueueName,durable:true,autoDelete:false,exclusive:false,arguments:null);
                        channel.QueueBind(TopQueueName,TopExchangeName,routingKey:TopQueueName);
                        Console.WriteLine("请输入要发送的消息!");
                        string vadata = Console.ReadLine();
                        while(vadata!="exit")
                        {
                            var msgBody = Encoding.UTF8.GetBytes(vadata);
                            channel.BasicPublish(exchange:TopExchangeName,routingKey:TopQueueName,basicProperties:null,body:msgBody);
                            Console.WriteLine(string.Format("**发送时间:{0},发送完成,输入exit退出消息发送",DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")));
                            vadata = Console.ReadLine();
                        }
                    }
                }
            }
    
            static void Main(string[] args)
            {
                TopicExchangeSendMsg();
            }
        }
    }

    C-消费者代码:

    using RabbitMQ.Client;
    using RabbitMQ.Client.Events;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace RabbitMQClient_C
    {
        /// <summary>
        /// Customer接受消息代码
        /// </summary>
        class Program
        {
            private readonly static ConnectionFactory rabbitMqFactory = new ConnectionFactory()
            {
                 HostName="127.0.0.1", UserName="---",Password="514600",Port=5672
            };
    
            /// <summary>
            /// 路由名称
            /// </summary>
            const string TopExchangeName = "topic.justin.exchange";
    
            /// <summary>
            /// 队列名称
            /// </summary>
            const string TopQueueName = "topic.justin.queue";
    
            public static void TopicAcceptExchange()
            {
                using(IConnection conn = rabbitMqFactory.CreateConnection())
                {
                    using(IModel channel = conn.CreateModel())
                    {
                        channel.ExchangeDeclare(TopExchangeName,"topic",durable:true,autoDelete:false,arguments:null);
                        channel.QueueDeclare(TopQueueName,durable:true,autoDelete:false,exclusive:false,arguments:null);
                        channel.BasicQos(prefetchSize:0,prefetchCount:1,global:false);//作用:
                        channel.QueueBind(TopQueueName,TopExchangeName,routingKey:TopQueueName);
                        var consumer = new EventingBasicConsumer(channel);
                        consumer.Received += (model, ea) =>
                            {
                                var msgBody = Encoding.UTF8.GetString(ea.Body);
                                Console.WriteLine(string.Format("**接收时间:{0},消息内容:{1}",
                                    DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"), msgBody));
                                int dots = msgBody.Split('.').Length -1;
                                System.Threading.Thread.Sleep(dots*1000);
                                Console.WriteLine(" [x] Done");
                                channel.BasicAck(deliveryTag:ea.DeliveryTag,multiple:false);
                            };
                        channel.BasicConsume(TopQueueName,noAck:false,consumer:consumer);
    
                        Console.WriteLine("按任意键,退出程序");
                        Console.ReadLine();
                    }
                }
            }
    
            static void Main(string[] args)
            {
                TopicAcceptExchange();
            }
        }
    }
  • 相关阅读:
    No.1
    JS二叉树的操作
    JS实现快排
    BOM中的各种height
    innerHTML outerHTML innerText value 区别
    【转载】JS中DOM操作汇总
    【转载】轻松理解JS闭包
    【转载】JavaScript模块入门
    【转载】JavaScript模块简介
    【转载】浏览器缓存详解:expires cache-control last-modified
  • 原文地址:https://www.cnblogs.com/x-poior/p/6123891.html
Copyright © 2011-2022 走看看