C#使用rabbitmq (简单例子)

2023-05-16

首先在visual studio项目里面用nuget工具加入 easyNetQ DLL 

然后做一个help类

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using EasyNetQ;
using EasyNetQ.Topology;

namespace ConsoleAppPublish
{
    public class MQHelp
    {
        public string IPAddress { get; set; }
        public string VirtualHost { get; set; }
        public string Username { get; set; }
        public string Password { get; set; }
        public string ExchangeName { get; set; }
        public string RouteName { get; set; }
        public string QueueName { get; set; }
        public MQSendEnum SendEnum { get; set; } 

        private IBus bus = null;

        public MQHelp(string ip, string vHost, string user, string pwd, string exchange, string rout, string queue, MQSendEnum em)
        {
            this.IPAddress = ip;
            this.VirtualHost = vHost;
            this.Username = user;
            this.Password = pwd;
            this.ExchangeName = exchange;
            this.RouteName = rout;
            this.QueueName = queue;
            this.SendEnum = em;

            try
            {
                this.bus = RabbitHutch.CreateBus(GetMqConnection());

                if (string.IsNullOrEmpty(queue) == false)
                {
                    bus.Advanced.QueueDeclare(queue);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

        private string GetMqConnection()
        {
            string conn = string.Format("host={0};virtualHost={1};username={2};password={3}",
                IPAddress, VirtualHost, Username, Password);

            return conn;
        }

        public void SendMsg(string msg)
        {
            try
            {
                //MyMessage msgOBJ = new MyMessage() { Text=msg };
                var message = new EasyNetQ.Message<object>(msg);

                IExchange ex = null;
                //判断推送模式
                if (this.SendEnum == MQSendEnum.Direct)
                {
                    ex = bus.Advanced.ExchangeDeclare(this.ExchangeName, ExchangeType.Direct);
                }
                if (this.SendEnum == MQSendEnum.Fanout)
                {
                    //广播订阅模式
                    ex = bus.Advanced.ExchangeDeclare(this.ExchangeName, ExchangeType.Fanout);
                }
                if (this.SendEnum == MQSendEnum.Topic)
                {
                    //主题路由模式
                    ex = bus.Advanced.ExchangeDeclare(this.ExchangeName, ExchangeType.Topic);
                }

                //发送
                this.bus.Advanced.Publish(ex, this.RouteName, false, message);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }

        public void ReceiveMsg()
        {
            try
            {
                this.bus.PubSub.Subscribe<object>("", m => {
                    Console.WriteLine(m.ToString());
                    //LogHelp.Info(m.ToString());
                } ,f => {
                    f.WithQueueName(this.QueueName);
                } );
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }


    }

    public enum MQSendEnum
    {
        Direct = 1,   //推送模式
        Fanout = 2,   //订阅模式
        Topic = 3     //主题路由模式
    }
     

}

然后在控制台里面发送  或者 接收MQ 消息:

   class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("MQ test");
 

            MQHelp mq = new MQHelp("10.10.10.10", "testhost", "admin", "adminPWD", "amq.topic", "orderTEST", "qTEST", MQSendEnum.Topic);
            mq.SendMsg("hello123"); 
            mq.ReceiveMsg();



            Console.WriteLine("end Program");
            Console.ReadLine();
        }
    }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C#使用rabbitmq (简单例子) 的相关文章

  • 【系统篇 / 域】❀ 04. 组 ❀ Windows Server 2016

    简介 如果能够使用组 xff08 group xff09 来管理用户帐户 xff0c 则必定能够减轻许多网络管理负担 对某个组设置权限后 xff0c 此组内的所有用户都会自动拥有此权限 新建组 可以通过 Active Directory 用
  • Gson源码之TypeAdapterFactory

    TypeAdapterFactory 1 接口类 xff0c 主要是用来创建TypeAdapter对象的2 若Json中的数据结构相同 xff0c 可以进行共享3 其实现类分别是JsonAdapterAnnotationTypeAdapte
  • 如何修改Win10的Windows Terminal的背景(带图文)

    效果图 Windows PowerShell的下载 在Win10上已经带有了新出的Windows Terminal xff08 preview xff09 相对于cmd的界面已经好看了很多 xff0c 但是对着黑乎乎的背景还是容易让人萌发想
  • 普通类和抽象类有哪些区别?

    普通类和抽象类有哪些区别 xff1f 抽象类不能被实例化抽象类可以有抽象方法 xff0c 抽象方法只需申明 xff0c 无需实现含有抽象方法的类必须申明为抽象类抽象的子类必须实现抽象类中所有抽象方法 xff0c 否则这个子类也是抽象类抽象方
  • 美团技术十年:让我们感动的那些人那些事

    时光荏苒 xff0c 美团十岁了 xff0c 美团技术团队也走过了十个春秋 2010年3月4日美团网上线的时候 xff0c 整个公司总共十来人 xff0c 在一套三居室的民房里起步 其中技术团队只有5个人 xff0c 现在有4位还在美团 今
  • linux update kernel

    1 update source step 1 deb https mirrors zju edu cn ubuntu focal main restricted universe multiverse deb https mirrors z
  • sql基础知识left join,right join,inner join区别

    1 left join即以左表为主查出左边表对应的所有数据 lt pre name 61 34 code 34 class 61 34 sql 34 gt select from A left join B on A id 61 B pid
  • 明知 | TypeScript 结合 egg.js 基本使用

    小小又进入了学习状态 xff0c 此时小小由于最近接触了js的相关内容 xff0c 进而接触了一些ts相关的内容 xff0c 所以小小本次主要学习的内容是ts 安装相关依赖 这里安装两个依赖 xff0c 分别为egg和ts 安装ts 这里需
  • 数据库中like的用法

    转自 xff1a http www pinlue com article 2020 03 3100 0310073883813 html
  • Log4j 2使用教程

    转载自 Blog of 天外的星星 xff1a http www cnblogs com leo lsw p log4j2tutorial html Log4j 2的好处就不和大家说了 xff0c 如果你搜了2 xff0c 说明你对他已经有
  • http常见的响应状态码

    HTTP响应状态码分类 1XX xff1a 100 199 信息响应 2XX xff1a 200 299 成功响应 3XX xff1a 300 399 重定向 4XX xff1a 400 499客户端错误 5XX xff1a 500 505
  • vncserver无法启动

    一 问题现象 运行vncserver的时候提示出错 xff0c 查看vnc的日志发现如下错误日志 litin 64 linuxService vnc cat linuxService 4 log Xvnc Free Edition 4 1
  • MongoDB自学笔记12---4.4 更新文档

    4 4 更新文档 Mongodb的增删查都已经学完了 xff0c 只剩下更新了 在mongodb中提供了update 和save 方法用于更新一个文档 xff0c update 是使用最多的 xff0c save 在前面4 1插入文档的时候
  • ffmpeg重要结构体之AVCodec和AVIOContext

    今天继续讲解ffmpeg结构体AvCodec和AVIOContext以便加深对ffmpge的理解 一 AVCodec的讲解 AVCodec结构体是有关codec的结构体 在文件 34 libavcodec avcodec h 34 中 其中
  • xcode6制作framework(使用第三方依赖框架)

    这两天由于会用到framework所以研究了一下framework的制作 xff0c 我用到了xcode6 1 AFNetworing 转载请注明http blog csdn net mengxiangyue 废话不多说了 xff0c 下面
  • OC项目中使用Swift

    OC项目中使用Swift 本文版权归作者所有 xff0c 如需转载请联系孟祥月 CSDN博客 xff1a http blog csdn net mengxiangyue 独立博客 xff1a http mengxiangyue com 最近
  • iOS9-by-Tutorials-学习笔记六:UIStackView-Auto-Layout-Changes

    iOS9 by Tutorials 学习笔记六 xff1a UIStackView Auto Layout Changes 本文版权归作者所有 xff0c 如需转载请联系孟祥月 CSDN博客 xff1a http blog csdn net
  • Java多线程4—线程同步问题+火车票售票系统

    在上一篇文章中写到了许多线程共享同一数据 xff0c 这种情况在现实的生活中也是经常发生的 xff0c 比如火车站的火车票售票系统 火车票售票系统是一个常年运行的系统 xff0c 为了满足乘客的需求 xff0c 我们不能只设一个窗口 xff
  • Java模拟操作系统进程调度算法—先来先服务、短作业优先、高响比优先

    首先我们先介绍一下这三个算法 xff0c 先来先服务是指按照进程到来的时间 xff0c 谁先来谁执行 短作业优先是指作业服务时间短的先执行 高响比优先是根据公式计算出优先权选出优先权最高的执行 xff0c 计算高响比优先权的公式 xff1a
  • Java中JTbale使用—设置单元格对齐方式

    作者 xff1a 孟祥月 博客 xff1a http blog csdn net mengxiangyue import java awt Color import java awt Component import javax swing

随机推荐

  • Spring Cloud 入门(1)-- 第一个 Kotlin 微服务

    最近公司需要使用 Spring Cloud 开发后台应用 xff0c 为了以后能够看懂后台代码 xff0c 所以决定学习一下 Spring Cloud 对于Spring Cloud和微服务的介绍 xff0c 各位自行网上搜索吧 本系列文章是
  • Spring Cloud 入门(2)-- 编写服务消费者

    上一篇文章创建了一个 user service 微服务 xff0c 本文编写一个消费者 xff0c 本文比较简单 1 目标 创建一个 movie service xff0c 该服务器也能够查询用户信息 xff0c 但是内部是通过调用 use
  • jquerymobile-7 导航和多页面固定导航

    在开发的过程中 xff0c 我们经常会遇到在页面的底部有一排按钮 xff0c 我们可以根据这些按钮切换页面 xff0c 或者执行一些动作 在jquerymobile中我们可以在footer和header上添加这样的导航 下面看一个例子代码
  • phonegap入门--4 Camera 摄像头

    今天周六了 每次到了周六就不知道干嘛去 好没劲啊 有在北京的如果周六也没劲的 可以联系我大家一起出去玩 qq598660766 没事干 那就写写博客吧 今天介绍一下Camera这个对象 camera对象提供对设备默认摄像头应用程序的访问 C
  • android focusableInTouchMode设置为true导致OnClick事件失效,点击两次生效

    在开发中遇到focusableInTouchMode ture导致OnClick事件 点击两次生效 导致达不到效果 所以要分析源码解决问题 当在xml布局文件中 设置focusableInTouchMode ture 时 表示触摸事件可以让
  • Android自定义控件基础

    采用自定义控件解决重复编写代码的问题 总共分三步 1 写好一个自定义模板布局 title XML span class hljs pi lt xml version 61 34 1 0 34 encoding 61 34 utf 8 34
  • String,StringBuffer,StringBuilder的区别(优缺点)

    最近学习到StringBuffer xff0c 心中有好些疑问 xff0c 搜索了一些关于String xff0c StringBuffer xff0c StringBuilder的东西 xff0c 现在整理一下 关于这三个类在字符串处理中
  • Android真机获得root权限修改文件权限

    好久没有更新博客了 xff0c 最近因为重装了系统导致所有的配置都不存在了 xff0c 当要修改Android权限去查看数据库文件的时候 xff0c 发现又忘记了怎么去获得修改权限 xff08 其实第一次弄这个内容的时候就费了很大的劲 xf
  • Android完全自定义控件并且实现监听事件

    本篇文章带来Android的完全自定义控件 载体是自定义一个开关的控件 xff0c 并且能够响应事件 xff0c 首先我们先创一个项目 xff0c 名字就叫ToggleView xff0c 修改MainActivity span class
  • Android屏幕适配实战

    说一下在项目里面遇到的一个问题 xff0c 和解决思路 需求来源于运营小姐姐 xff0c 她们希望在App的搜索关键字前面加上图片醒目效果图如下 布局很简单左边一个SimpleDraweeView xff0c 右边一个TextView xf
  • 定制阿里代码检查,实现你自己的代码规范检查

    几个月前 xff0c 阿里开源了p3c xff0c 我也接到了老大交给我的技术改造 是这样的 xff0c app是老项目了 xff0c 半年前接入了ARouter xff0c 由于Activity繁多 xff0c 就没有去全局支持ARout
  • Fresco内部诟病引起的初次从网络加载PNG图片失败

    如题描述 xff0c 这个问题在项目中存在已久 xff0c 今天由于自己的功能在首页 xff0c 初次启动的体验极其糟糕 xff0c 所以硬下头皮把这个问题解决了 先来描述一下怎么样一个差的体验吧 就是当我第一次加载网络PNG xff08
  • 华为OpenEuler体验系列(20)-树莓派 安全渗透测试环境安装

    一 下载镜像 xff1a 地址 xff1a https www openeuler org zh download 二 格式化TF卡和烧录系统 使用过的SD卡 xff0c 用SD Card Formatter格式化SD卡 选择好SD卡后格式
  • Ubuntu开机没有图形界面 进入tty的拯救方法

    Ubuntu开机没有图形界面 进入tty的拯救方法 1 从命令行模式登录2 检查是否可以连网3 安装图形界面参考 由于卸载软件的过程中误删了系统图形界面相关的文件 xff0c 导致开机无法进入图形界面 xff0c 需要通过命令重新安装 1
  • 什么是人工智能?

    Extinguished philosophies lie about the cradle of every science as the strangled snakes beside that of Hercules adapted
  • android 11.0 SystemUI手势上滑显示导航栏和隐藏导航栏

    1 概述 在11 0的产品开发中 对于SystemUI导航栏状态栏的功能定制需求 有要求需要通过上滑来控制导航栏显示 然后3秒钟后自动消失导航栏 实现一个通过手势上滑显示导航栏的需求 2 SystemUI手势上滑显示导航栏和隐藏导航栏相关核
  • 电脑专业英语

    电脑专业英语 1 file n 文件 xff1b v 保存文件 2 command n 命令 xff0c 指令 3 use v 使用 xff0c 用途 4 program n 程序 5 line n 数据 xff0c 程序 行 xff0c
  • 关于极大连通子图与极小连通子图的解释

    对于极大连通子图 xff0c 我们可以把它分成3各部分来看 1 必须是子图 xff08 子图中的顶点 边都是原图的子集 xff09 2 连通 xff08 对于两个顶点u v xff0c 如果存在u到v的边 xff0c 那这两个点就是连通的
  • 公司信息系统架构建设规划

    企业的信息化建设的基础是构建企业的信息系统架构 xff08 也可称之为信息化架构 xff09 xff0c 信息系统架构又由应用架构 数据架构 技术架构和治理架构4部分组成 xff0c 本建议书主要以技术架构 应用架构以及技术架构为对象加以说
  • C#使用rabbitmq (简单例子)

    首先在visual studio项目里面用nuget工具加入 easyNetQ DLL 然后做一个help类 using System using System Collections Generic using System Linq u