上一篇已经讲了Rabbitmq如何在Windows平台安装,不懂请移步:RabbitMQ学习系列一:windows下安装RabbitMQ服务

一、理论:

.net环境下,C#代码调用RabbitMQ消息队列,本文用easynetq开源的.net Rabbitmq api来实现。

EasyNetQ 是一个易于使用的RabbitMQ的.Net客户端API。

RabbitMQ 是由 LShift 提供的一个 Advanced Message Queuing Protocol (AMQP) 的开源实现,由以高性能、健壮以及可伸缩性出名的 Erlang 写成,因此也是继承了这些优点。

AMQP 里主要要说两个组件:Exchange 和 Queue (在 AMQP 1.0 里还会有变动),

如下图所示,绿色的 X 就是 Exchange ,红色的是 Queue ,这两者都在 Server 端,又称作 Broker ,

这部分是 RabbitMQ 实现的,而蓝色的则是客户端,通常有 Producer 和 Consumer 两种类型:

二、asp.net项目搭建

1、新建项目(略)

2、项目nuget需要使用的三方dll,本文案例使用的版本如下图

3、消息队列类库结构说明

4、BusBuilder.cs管道创建类,主要负责链接Rabbitmq

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/// <summary>
/// 消息服务器连接器
/// </summary>
public class BusBuilder
{
    public static IBus CreateMessageBus()
    {
        //消息服务器连接字符串
        var connectionString = ConfigurationManager.ConnectionStrings["RabbitMQ"];
        if (connectionString == null || connectionString.ConnectionString == string.Empty)
        {
            throw new Exception("messageserver connection string is missing or empty");
        }
        return RabbitHutch.CreateBus(connectionString.ConnectionString);
    }
}

5、IProcessMessage类,定义了一个消息方法,用于消息传递

1
2
3
4
5
6
public interface IProcessMessage
{
    void ProcessMsg(Message msg);
    void Notice();
}

6、Message类,定义了消息传递的实体属性字段等信息

1
2
3
4
5
6
7
8
9
10
public class Message
{
    public string MessageID { getset; }
     
    public string MessageTitle { getset; }
    public string MessageBody { getset; }
    public string MessageRouter { getset; }
}

7、MQHelper类,负责创建消息管道、创建消息管道、发送消息体等工作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/// <summary>
/// 发送消息
/// </summary>
public static void Publish(Message msg)
{
     创建消息bus
    IBus bus = BusBuilder.CreateMessageBus();
    try
    {
        using (var publishChannel = bus.OpenPublishChannel())   //创建消息管道
        {
            publishChannel.Publish(msg, x => x.WithTopic(msg.MessageRouter));  //通过管道发送消息
        }
    }
    catch (EasyNetQException ex)
    {
        //处理连接消息服务器异常
    }
    bus.Dispose();//与数据库connection类似,使用后记得销毁bus对象
}

8、web项目进行调用后台消息队列方法

1
2
3
4
5
6
RabbitMQ.Message msg = new RabbitMQ.Message();
msg.MessageID = "test";
msg.MessageBody = DateTime.Now.ToString();
msg.MessageTitle = "test";
msg.MessageRouter = "pcm.notice.zhangsan";
RabbitMQ.MQHelper.Publish(msg);

这样就可以用c#发送消息到队列中,测试结果如下图:

查看队列下的消息记录

获取队列消息尝试

至此,C#向Rabbitmq消息队列发送消息已经简单完成

下一篇:C#订阅消息、获取消息的方式,敬请期待。。。

附件: RabbitMQ.rar 下载 (下载需要:0 个80币)

转载于:https://www.cnblogs.com/zxtceq/p/7891470.html

RabbitMQ学习系列二:.net 环境下 C#代码使用 RabbitMQ 消息队列相关推荐

  1. 【深度学习】Mac + pycharm环境下 MASK-Rcnn 代码实现过程中的问题

    自从用了mac,每天都在踩坑!纪念一下 mask代码地址:https://github.com/matterport/Mask_RCNN pythonapi地址:https://github.com/ ...

  2. Nginx学习系列二Linux下Nginx实现负载均衡

    关于在本地虚拟机(VMware 14)下安装Linux同时安装Nginx,请参考Nginx学习系列之搭建环境 1.启动Nginx 在Nginx安装成功的前提下,启动Nginx 已root模式登陆(权限 ...

  3. 图机器学习(GML)图神经网络(GNN)原理和代码实现(前置学习系列二)

    图机器学习(GML)&图神经网络(GNN)原理和代码实现(PGL)[前置学习系列二] 上一个项目对图相关基础知识进行了详细讲述,下面进图GML networkx :NetworkX 是一个 P ...

  4. Linux学习系列二:Linux中的常用命令

    这个系列的Linux教程主要参考刘遄老师的<Linux就该这么学>.用的系统是RHEL8,如果遇见一些命令出现问题,请首先检查自己的系统是否一致,如果不一致,可网上查一下系统间某些命令之间 ...

  5. Pyside2 学习系列二:PyInstaller打包项目exe (超详细的Pyside2 攻略)

    继上一篇文章创建了项目后,本章我们进行项目的打包工作. 本项目的所有演示代码:github可在这里下载. 打包只用的工具为PyInstaller. 打包步骤 1 准备环境 1.1 安装`PyInsta ...

  6. A.图机器学习(GML)图神经网络(GNN)原理和代码实现(前置学习系列二)

    图学习图神经网络算法专栏简介:主要实现图游走模型(DeepWalk.node2vec):图神经网络算法(GCN.GAT.GraphSage),部分进阶 GNN 模型(UniMP标签传播.ERNIESa ...

  7. Rasa 3.x 学习系列- 内网环境部署Docker及Rasa duckling、Redis

    Rasa 3.x 学习系列- 内网环境部署Docker及Rasa duckling.Redis 在单位内网 centos 7.9 Linux 环境里面安装Docker及Rasa duckling.Re ...

  8. 计算机图形学——OpenGL学习系列之绘制3D下的小桌子

    计算机图形学--OpenGL学习系列之绘制3D下的小桌子 做的一个小练习,主要用到了几何变换还有gl自带的一个绘制立方体的函数,顺便体会一下glPush和glPop的用法.另外,从2D到3D,开心到飞 ...

  9. Mysql学习篇之---Windows环境下安装 (修改密码)

    Mysql学习篇之---Windows环境下安装 (修改密码) 前言: 自己瞎鼓捣本机上的Mysql,结果导致mysql密码用那个都登录不进去了. 解决方案: 首先把mysql重新删除掉,重新解压了一 ...

最新文章

  1. php中用foreach改变数组的值的问题
  2. Android Activity 以及 Application 生命周期
  3. 周长最短面积最大_圆内接三角形中,正三角形周长最大值的证明
  4. WingIDE 5的安装与破解方法
  5. centos MySQL 双机_CentOS利用Keepalived构建双主MySQL+双机热备
  6. Android开发之高仿百度地图底部滑出菜单
  7. windows10系统下MongoDB的安装及环境配置
  8. python人人语音爬虫(登陆尚未完成,需要使用先登录在查cookie中的t)
  9. 干的漂亮!一夜之间GPS在南海信号全无,美军只能干瞪眼
  10. java程序的运行方式
  11. curl安装使用【超级无敌简单】
  12. 本特利振动探头177230-01-01-CN
  13. html原生的日期选择器,原生JS实现日期选择
  14. Unity实现播放Ogg格式视频功能实现
  15. 微信小程序使用font awsome图标库(最新fontawsome5)
  16. 大型分布式网站架构如何设计
  17. C语言练习题:统计 N 个整数中,大于零或小于零的整数个数(数组)
  18. 手牵手系列之TypeScript开发环境搭建
  19. 孙溟㠭篆刻《天地宽》
  20. 2019 初入IT十年(下)---- 视线所及只剩生活

热门文章

  1. VirtualBox虚拟机网络连接设置的四种方式
  2. 分享一个C#使用AT指令控制语音猫的例子
  3. 关于Javascript的内存泄漏问题的整理稿
  4. 区块链4.0DexChain是什么?
  5. 区块链技术之以太坊ETH白皮书
  6. sql算术运算符_SQL运算符教程–按位,比较,算术和逻辑运算符查询示例
  7. c语言知道算法写不出代码,这个代码怎么写算法啊,求教,我真的不会写算法怎么办#incl...
  8. linux禁止路由器,FCC 新规可能禁止在 WiFi 路由器安装 OpenWRT
  9. 7软件质量与测试规范
  10. 登高自卑 | 我的PyTorch入门与实践笔记