Rabbitmq运用之direction模式

Rabbitmq运用之简单模式

环境安装

erlang :https://www.erlang.org/downloads

rabbitmq 官方下载地址 https://github.com/rabbitmq/rabbitmq-server/releases/tag/v3.9.13

个人阿里云盘分享:「rabbitmq」https://www.aliyundrive.com/s/AitgweRxMJE 点击链接保存,或者复制本段内容,打开「阿里云盘」APP ,无需下载极速在线查看,视频原画倍速播放。

安装好之后在RabbitMQ Command Prompt (sbin dir) 输入rabbitmq-plugins enable rabbitmq_management 启动web 管理页面

在浏览器里面输入地址http://localhost:15672/ 看到如下界面就说明成功了

在这里插入图片描述

使用rabbitmqctl --help 可以查看帮助

rabbitmqctl list_user 可以查看用户,找个用户改密码可以登录进网站

一般 guest/guest ,忘记的话可以用 rabbitmqctl change_password guest 重置密码

登录进去之后页面如下,说明已经安装完成了

在这里插入图片描述

我们先增加一个用户吧,我起名Henry,密码123456,赋予administrator权限。我这边就不多做介绍

接下来我们开始写代码了。

添加依赖包 RabbitMQ.Client.dll

这里备注一下

以为可以不用定义exchange的,默认使用default现在没办法用,只能自己定义

RabbitMQ.Client.Exceptions.OperationInterruptedException:“The AMQP operation was interrupted: AMQP close-reason, initiated by Peer, code=403, text=‘ACCESS_REFUSED - operation not permitted on the default exchange’, classId=50, methodId=20”

可能是新版本变动的。

下面是客户端代码,也就是消费端。

using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;

namespace RabbitmqdefaultClient
{
    class Program
    {
        static void Main(string[] args)
        {
            ConnectionFactory connectionFactory = new ConnectionFactory()
            {

                HostName = "127.0.0.1",
                UserName = "Henry",
                Password = "123456",
                Port = 5672,
              

            };
            connectionFactory.AutomaticRecoveryEnabled = true;
            //factory.setUri("amqp://userName:password@hostName:portNumber/virtualHost");
            //创建连接
            IConnection connection = connectionFactory.CreateConnection();
            //创建一个chanel
            IModel model = connection.CreateModel();
            //   ExchangeType.Direct
            //    model.ExchangeDeclare();
          model.ExchangeDeclare("HenryExchange", ExchangeType.Direct);
            model.QueueDeclare("HenryQueue", true , false,false,null);
        
            model.QueueBind("HenryQueue", "HenryExchange", "test");

            EventingBasicConsumer defaultBasicCohnsumer = new EventingBasicConsumer(model);
            defaultBasicCohnsumer.Received += (obj, e) =>
            {
                string body = Encoding.UTF8.GetString(e.Body.ToArray());
                Console.WriteLine(body);


            };
            //这些参数后面讲解autoAck=true 自动确认
            //  string BasicConsume(string queue, bool autoAck, string consumerTag, bool noLocal, bool exclusive, IDictionary<string, object> arguments, IBasicConsumer consumer);
            model.BasicConsume("HenryTest", true, "", false, false, null, defaultBasicCohnsumer);

            //asicGetResult BasicGet(string queue, bool autoAck);  另外一种直接用方法一个一个获取
            //我个人比较喜欢用事件
            Console.ReadKey();
            Console.WriteLine("Hello World!");
        }
    }
}

下面是服务器端,也就相当推送消息的

using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Text;

namespace RabbitmqDefaultServer
{
    class Program
    {
        static void Main(string[] args)
        {

            ConnectionFactory connectionFactory = new ConnectionFactory()
            {

                HostName = "127.0.0.1",
                UserName = "Henry",
                Password = "123456" ,
                Port = 5672

            };
          
            //创建连接
            IConnection connection = connectionFactory.CreateConnection();
            //创建一个chanel
            IModel model = connection.CreateModel();
            for (int i = 0; i < 100; i++)
            {
                String str = "测试数据" + i;

                byte  [] array= Encoding.UTF8.GetBytes(str);
                //将数据放入队列
                model.BasicPublish("World", "test",true,null, array);
            }
            Console.ReadKey();
            Console.WriteLine("Hello World!");
        }

       
    }
}

今天先写到这里,上面的模式就是direction ,后续再讲 fanout topic,headers, rpc等其他内容

        Console.WriteLine("Hello World!");
    }

   
}

}


今天先写到这里,上面的模式就是direction ,后续再讲  fanout topic,headers, rpc等其他内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落叶@Henry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值