tnblog
首页

rabbitmq六大版块之三(Fanout类型交换机相同数据多逼格处理)

48人阅读 2019/5/28 23:50 评论:0 手机浏览 收藏
分类: .net后台框架


Fanout类型交换机的特点是:

同样的数据分发给每一个自己所绑定的队列,每个队列可以按照自己的需求对数据进行不同的处理

【注意】:Fanout类型不会通过routingKey进行分类,所以无论你的数据中写不写routingKey都没用


队列1与队列2的代码:

队列2就把代码中队列名改成2就可以了

//192.168.1.63
//创建一个连接工厂
ConnectionFactory factory = new ConnectionFactory()
{
    HostName= "192.168.1.63",
    UserName = "hbadmin",
    Password= "hbadmin"
};
using (var conntion = factory.CreateConnection())
{
    using (var channel = conntion.CreateModel())
    {
        //申明交换机
        channel.ExchangeDeclare("myfanoutexchange", ExchangeType.Fanout, true, false, null);
        //创建队列
        channel.QueueDeclare("myfanoutqueue1", true, false, false, null);
        //将queue绑定到exchange之上
        channel.QueueBind("myfanoutqueue1", "myfanoutexchange", string.Empty, null);

        //创建并添加事件
        EventingBasicConsumer consumer = new EventingBasicConsumer(channel);

        consumer.Received += (sender,e)=>
        {
            var msg = Encoding.UTF8.GetString(e.Body);

            Console.WriteLine(msg);
        };
        channel.BasicConsume("myfanoutqueue1", true, consumer);

        Console.WriteLine("consumer【1】端启动完毕!");

        Console.Read();
    }
}


数据端代码

ConnectionFactory factory = new ConnectionFactory()
{
    HostName = "192.168.1.63",
    UserName = "hbadmin",
    Password = "hbadmin"
};
using (var conntion = factory.CreateConnection())
{
    using (var channel = conntion.CreateModel())
    {
        //加入100条数据
        for (int i = 0; i < 100; i++)
        {
            var msg = Encoding.UTF8.GetBytes($"{i}:你好鸭!");

            channel.BasicPublish("myfanoutexchange", string.Empty, null, msg);
            Console.WriteLine(i);
        }
        Console.Read();
    }
}


来看看结果



我们可以发现:

队列1与队列2数据是相同,对吧!

中途就可以通过不同队列实现不同的功能就行了!


rabbitmq基础命令

rabbitmqctl stop_app  #停止rabbitmq运行
rabbitmqctl start_app #启动rabbitmq运行
rabbitmqctl reset     #格式化mq

【注意】:如需要格式化mq,需要先stop_app,然后reset,再start_app哟!


本期就这样,大家有机会多尝试!


评价
!咖喱棒!
文章
6
评论
8
分类
16
关注
16
{{item.ArticleTitle}}
{{item.BlogName}} : {{item.Content}}