RabbitMQ消息队列帮助类
调用
//消息队列发消息
MqConfigInfo config = new MqConfigInfo();
config.MQExChange = "DrawingOutput";
config.MQQueueName = "DrawingOutput";
config.MQRoutingKey = "DrawingOutput";
MqHelper heper = new MqHelper(config);
byte[] body = Encoding.UTF8.GetBytes("98K");//发送的内容
heper.SendMsg(body);
消息队列帮助类MqHelper
using Newtonsoft.Json;
using RabbitMQ.Client;
using RabbitMQ.Client.Content;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace LogTest
{
public class MqHelper : IDisposable
{
#region 消息队列的配置信息 public IConnection MQConnection { get; set; } public IModel MQModel { get; set; } public MqConfigInfo MqConfigInfo { get; set; } #endregion
public MqHelper(MqConfigInfo configInfo)
{
MqConfigInfo = configInfo;
var username = "guest";//用户名
//if (string.IsNullOrEmpty(username))
//{
// throw new ConfigurationErrorsException("MQHelper配置节MQUserName错误");
//}
var password = "guest";//密码
//if (string.IsNullOrEmpty(password))
//{
// throw new ConfigurationErrorsException("MQHelper配置节MQPassWord错误");
//}
var virtualhost = "mq_test";//虚拟主机名
//if (string.IsNullOrEmpty(virtualhost))
//{
// throw new ConfigurationErrorsException("MQHelper配置节MQVirtualHost错误");
//} var connectionFactory = new ConnectionFactory
{
UserName = username,
Password = password,
VirtualHost = virtualhost,
RequestedHeartbeat = ,
HostName = "192.168.1.49",//消息队列的ip
Port =
}; try
{
MQConnection = connectionFactory.CreateConnection();
MQModel = MQConnection.CreateModel();
if (MqConfigInfo.MQExChangeType != null)
{
MQModel.ExchangeDeclare(MqConfigInfo.MQExChange, MqConfigInfo.MQExChangeType);
QueueDeclareOk ok = MQModel.QueueDeclare(MqConfigInfo.MQQueueName, true, false, false, null); MQModel.QueueBind(MqConfigInfo.MQQueueName, MqConfigInfo.MQExChange, MqConfigInfo.MQRoutingKey);
}
}
catch (Exception ex)
{
throw new Exception("MQHelper创建连接失败", ex);
}
} /// <summary>
/// 发送消息
/// </summary>
/// <typeparam name="T">消息类型</typeparam>
/// <param name="message">消息主体</param>
/// <returns></returns>
public bool SendMsg(object message)
{
try
{
IMapMessageBuilder mmb = new MapMessageBuilder(MQModel);
System.Collections.Generic.IDictionary<string, object> header = mmb.Headers;
//header["Header"] =MqConfigInfo.MQHeader; string json = JsonConvert.SerializeObject(message); byte[] body = Encoding.UTF8.GetBytes(json);
if (MqConfigInfo.MQPersistModel)
{
((IBasicProperties)mmb.GetContentHeader()).DeliveryMode = ;
}
MQModel.BasicPublish(MqConfigInfo.MQExChange, MqConfigInfo.MQRoutingKey, (IBasicProperties)mmb.GetContentHeader(), body);
}
catch (Exception ex)
{
throw ex;
}
return true;
} /// <summary>
/// 发送消息
/// </summary>
/// <param name="message">消息主体</param>
/// <returns></returns>
public bool SendMsg(byte[] message)
{
try
{
IMapMessageBuilder mmb = new MapMessageBuilder(MQModel);
System.Collections.Generic.IDictionary<string, object> header = mmb.Headers;
//header["Header"] =MqConfigInfo.MQHeader;
if (MqConfigInfo.MQPersistModel)
{
((IBasicProperties)mmb.GetContentHeader()).DeliveryMode = ;
}
MQModel.BasicPublish(MqConfigInfo.MQExChange, MqConfigInfo.MQRoutingKey, (IBasicProperties)mmb.GetContentHeader(), message);
}
catch (Exception ex)
{
throw ex;
}
return true;
} /// <summary>
/// 发送消息
/// </summary>
/// <param name="message">消息主体</param>
/// <returns></returns>
public bool SendMsg(string message)
{
try
{
IMapMessageBuilder mmb = new MapMessageBuilder(MQModel);
System.Collections.Generic.IDictionary<string, object> header = mmb.Headers;
//header["Header"] =MqConfigInfo.MQHeader;
byte[] body = Encoding.UTF8.GetBytes(message);
if (MqConfigInfo.MQPersistModel)
{
((IBasicProperties)mmb.GetContentHeader()).DeliveryMode = ;
}
MQModel.BasicPublish(MqConfigInfo.MQExChange, MqConfigInfo.MQRoutingKey, (IBasicProperties)mmb.GetContentHeader(), body);
}
catch (Exception ex)
{
throw ex;
}
return true;
} public void Dispose()
{
if (MQModel != null)
{
MQModel.Dispose();
} if (MQConnection != null)
{
MQConnection.Dispose();
}
}
} /// <summary>
/// 消息队列配置信息
/// </summary>
public class MqConfigInfo
{
public MqConfigInfo()
{
MQExChangeType = "direct";
MQPersistModel = true;
} /// <summary>
/// 交换机
/// </summary>
public string MQExChange { get; set; } /// <summary>
/// 交换机类型(fanout,direct,topic, headers)默认direct
/// </summary>
public string MQExChangeType { get; set; } /// <summary>
/// 路由Key
/// </summary>
public string MQRoutingKey { get; set; } /// <summary>
/// 消息头
/// </summary>
public string MQHeader { get; set; } /// <summary>
/// 消息的持久化
/// </summary>
public bool MQPersistModel { get; set; } /// <summary>
/// 队列名称
/// </summary>
public string MQQueueName { get; set; }
}
}
RabbitMQ消息队列帮助类的更多相关文章
- RabbitMQ学习系列二:.net 环境下 C#代码使用 RabbitMQ 消息队列
一.理论: .net环境下,C#代码调用RabbitMQ消息队列,本文用easynetq开源的.net Rabbitmq api来实现. EasyNetQ 是一个易于使用的RabbitMQ的.Net客 ...
- RabbitMQ 消息队列 应用
安装参考 详细介绍 学习参考 RabbitMQ 消息队列 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. M ...
- (十三)RabbitMQ消息队列-VirtualHost与权限管理
原文:(十三)RabbitMQ消息队列-VirtualHost与权限管理 VirtualHost 像mysql有数据库的概念并且可以指定用户对库和表等操作的权限.那RabbitMQ呢?RabbitMQ ...
- SpringCloud之RabbitMQ消息队列原理及配置
本篇章讲解RabbitMQ的用途.原理以及配置,RabbitMQ的安装请查看SpringCloud之RabbitMQ安装 一.MQ用途 1.同步变异步消息 场景:用户下单完成后,发送邮件和短信通知. ...
- .net core使用rabbitmq消息队列 (二)
之前有写过.net core集成使用rabbitmq的博文,见.net core使用rabbitmq消息队列,但是里面的使用很简单,而且还有几个bug,想改下,但是后来想了想,还是算了,之前使用的是. ...
- .net core使用rabbitmq消息队列
看博文的朋友,本文有些过时了,还有些BUG,如果想了解更多用法,看看这篇吧:.net core使用rabbitmq消息队列 (二) 首先,如果你还没有安装好rabbitmq,可以参考我的博客: Ubu ...
- C# .net 环境下使用rabbitmq消息队列
消息队列的地位越来越重要,几乎是面试的必问问题了,不会使用几种消息队列都显得尴尬,正好本文使用C#来带你认识rabbitmq消息队列 首先,我们要安装rabbitmq,当然,如果有现成的,也可以使用, ...
- 基于ASP.NET Core 5.0使用RabbitMQ消息队列实现事件总线(EventBus)
文章阅读请前先参考看一下 https://www.cnblogs.com/hudean/p/13858285.html 安装RabbitMQ消息队列软件与了解C#中如何使用RabbitMQ 和 htt ...
- RabbitMQ消息队列(一): Detailed Introduction 详细介绍
http://blog.csdn.net/anzhsoft/article/details/19563091 RabbitMQ消息队列(一): Detailed Introduction 详细介绍 ...
随机推荐
- Python作业篇 day02
作业 知识点回顾: 1.变量名的规范 2.简述 ascii unicode utf-8 的关系 3.简述 位与字节的关系 4.‘我是帅哥’ 在utf-8编码用几个字节 ,在gbk用几个字节 逻辑运 ...
- java 获取(格式化)日期格式
// 参考: https://www.cnblogs.com/blog5277/p/6407463.htmlpublic class DateTest { // 支持时分秒 private stati ...
- Qt中QListWidget的verticalScrollMode选项设置为ScrollPerPixel无效果的原因
设置为ScrollPerPixel无效果,根据Qt手册的描述,需要在设置一次setSingleStep()的值,才会生效
- 30 整数中1出现的次数(从1到n整数中1出现的次数)这题很难要多看*
题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1.10.11.12.13因此共出现6次,但是对于后面问题他就没辙了. ...
- PHP 符号大全
注解符号: // 单行注解 /* */ 多行注解 引号的使用 ’ ’ 单引号,没有任何意义,不经任何处理直接拿过来; " "双引号,PHP动态处理然后输出,一般 ...
- luogu P2761 软件补丁问题
网络流(x) 状压(√) 初始状态为全1,合法状态为(state&b1)&(state|b1) == state && (state&b2)&(stat ...
- Day4-F-产生冠军 HDU - 2094
有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛. 球赛的规则如下: 如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C. 如果A打败了B,B又打败了 ...
- eclipse中maven web项目部署时缺少classes文件或者resources文件
写这篇博客的原因 问题描述 昨天发现eclipse中maven web项目部署时缺少classes文件或者resources文件 本来以为是很常见的原因, 依次检查"Java Build P ...
- 使用JavaScript和Canvas打造真实的雨滴效果
使用JavaScript和Canvas打造真实的雨滴效果 寸志 · 1 年前 我最近搞了一个有趣的项目——rainyday.js .我认为这个项目并不怎么样,而且,事实上这是我第一次尝试接触一些比弹窗 ...
- FieldByName().AsFloat只可以保留四位小数,四位以上应使用Value
FieldByName('a').AsFloat to FieldByName('a').Value