IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Rabbitmq运用之direction模式 -> 正文阅读

[大数据]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等其他内容

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:34:18  更:2022-03-08 22:38:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:03:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码