菜的像徐坤
排名
7
文章
192
粉丝
15
评论
16
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术

消息队列(rabbitMQ)(入门)

6927人阅读 2022/1/6 17:01 总访问:961071 评论:0 收藏:3 手机
分类: .net core

前言

常用的消息队列
MSMQ:微软自带的消息队列,使用的人少,不开源

rabbitMQ:开源,支持语言多,使用比较广泛,社区支持强

rocketMQ:阿里巴巴的消息队列,开源,但是商业版是收费的,除了java语言其他语言支持的都不好 



消息队列的主要作用

1. 异步调用,延迟处理

 2. 应用解耦

 3. 处理高并发

rabbitMQ 安装

rabbitMQ是使用erlang语言开发的,所以安装rabbitMQ时同时也要安装erlang语言(官网就可以下)


都安装好后在安装文件夹sbin中打开命令窗口


输入一下命令启动rabbitMQ
rabbitmq-plugins enable rabbitmq_management


看到这样就启动成功了

然后需要重启一下rabbitMQ服务

现在rabbitMQ就可以正式使用了

rabbitMQ默认地址http://localhost:15672/
默认账号密码 :guest  /   guest

看到这个页面消息队列就可以使用了

rabbitMQ 产生一条消息

命名空间using RabbitMQ.Client;

 

创建一个链接的工厂类

  1.  ConnectionFactory connectionFactory = new ConnectionFactory() { HostName ="localHost",UserName ="guest",Password = "guest",Port= 5672 };
  2.   services.AddSingleton<ConnectionFactory>(connectionFactory);

注入一下

  1.         private readonly ILogger<HomeController> _logger;
  2.         private readonly IFreeSql _FreeSql = null;
  3.         //链接工厂类
  4.         private readonly ConnectionFactory _connectionFactory;
  5.         public HomeController(ILogger<HomeController> logger, IStudent student, IFreeSql FreeSql, ConnectionFactory connectionFactory)
  6.         {
  7.             _logger = logger;
  8.             _FreeSql = FreeSql;
  9.             _connectionFactory = connectionFactory;
  10.         }

产生消息(交换机和队列创建一次就好了,后面直接用,不需要重复创建)

  1.             //创建消息队列
  2.             //创建链接
  3.             using ( var conn =_connectionFactory.CreateConnection()) 
  4.             {
  5.                 //创建通道
  6.                 using (var channel = conn.CreateModel()) 
  7.                 {
  8.                     //创建一个交换机(交换机的名字,交换机的类型)
  9.                     channel.ExchangeDeclare("MYExchange""direct");
  10.                     //创建一个队列("队列的名字","是否持久化","排外性","是否自动删除","参数")
  11.                     channel.QueueDeclare("maoyuan",false,falsefalse,null);
  12.                     //将交换机与队列进行绑定(不绑定就无法明确消息药推送到那个消息队列)(队列名,交换机名,路由key)路由key自己定义的名字
  13.                     channel.QueueBind( "maoyuan""MYExchange","Test key");
  14.                     //模拟101条消息
  15.                     for (int i = 1; i <= 101; i++)
  16.                     {
  17.                         byte[] mesg = System.Text.Encoding.UTF8.GetBytes("hello RabbitMQ"+i);
  18.                         //把消息放到消息队列里边去(交换机名字,路由key,属性,真正的消息)(路由Key通过交换机与队列的绑定的来)
  19.                         channel.BasicPublish("MYExchange""Test key"null, mesg);
  20.                     }
  21.                 }
  22.             }


这样消息就已经产生出来了

交换机的几种类型

direct  完全匹配模式
交换机与队列绑定的路由键与把消息放到消息队列里边去的路由键需要完全匹配
topic 模糊匹配
交换机与队列绑定的路由键与把消息放到消息队列里边去的路由键模糊匹配,通过*设置模糊匹配
fanout    广播方式(效率最快,因为不需要处理路由键)
不需要路由键,交换机直接将消息发送到和它关联的队列

headers 设置header去决定路由

评价

线程异步编程与消息队列区别想法

开线程也是异步,消息队列也是异步为什么还要用消息队列?因为开线程始终是在一个项目中,处理也需要这个项目或者这台电脑...

net core使用消息队列rabbitmq

使用NuGet下载rabbitmq客户端工具Install-Package RabbitMQ.Client -Version 3.6.5生产消息staticvoidMain(string[]args) ...

消息队列rabbitmq介绍

消息队列的一般作用 异步调用,延迟处理 应用解耦 流量消峰,处理高并发,秒杀等 说白了,消息队列就是一方生产消息,一方...

消息队列

## 消息队列- 消息队列: -- 就是一种订阅发布模式的实现- 主要的角色1. 消息的生产者2. 消息的消费者3. 消息队列- 作用:1...

消息队列(消息消费

前言消息队列中几个重要角色交换机负责把消息放在队列当中队列存放消息路由键交换机通过路由键去找到对应的路由(多个队列...

C委托与lamdba表达式入门以及Lamdba自己实现SelectMany等

?委托:l 什么委托: 本质是方法指针l 委托的作用: 作用:进行方法传递,方法可以当作一个参数进行传递,C#里边要传递...

Oracle数据库 入门教程(一

前言我什么都没有,只有,一个不确定的明天,一个不知道的未来Oracle数据库Oracle Database,又名Oracle RDBMS,或简称Orac...

signalr入门双向通讯简单网页聊天

下载依赖:install-package Microsoft.AspNet.SignalR -version 2.0.3服务器启动类:usingMicrosoft.Owin; usingOwin; ...

SVN入门使用操作说明

SVN作为源代码文件版本管理的工具,在日常项目中,经常使用到。但是,没有使用过SVN的用户,经常不知道如何操作,本文就为...

反射入门基础

反射可以根据字符串创建对象(类全名,类库名)反射可以访问属性,而且可以访问私有属性,并且给属性赋值反射可以访问字段...

Docker 系统性入门+进阶实践(2021最新版

ocker 系统性入门+进阶实践(2021最新版)- docker安装部署安装依赖包sudoyuminstall-yyum-utilsdevice-mapper-persistent-...

servlet 快速部署入门(继承GenericServlet类1

一、介绍二、入门搭建1:。。。。。2、3:第2 步还可以通过实现servlet接口完成,但是通过接口完成的话,需要重新的方法就...

Servlet 注解开发入门 1

一、1、创建项目a步:b步:c步:d步:e步:创建好后,如下图修改一下项目2、创建一个功能类3-4、具体逻辑5、部署到tomcata...

Netty入门教程——认识Netty

什么是Netty?Netty 是一个利用 Java 的高级网络的能力,隐藏其背后的复杂性而提供一个易于使用的 API 的客户端/服务器框架...

JDBC入门 2

一、创建项目。。。导入jar包。。。具体逻辑(配驱动链接)