好久没有写了,最近项目用到RabbitMQ,找了一些资料试验,最后终于成功了,把安装配置的步骤分享给大家。

一、Erlang
安装具体过程:

1.双击otp_win32_R16801.exe(不同版本可能命名字不一样),选择next

2.默认安装在C盘,建议程序安装在非系统盘比如D盘(如果安装在C盘可能会出现一些权限问题),修改好安装路径后,选next:

3.进入安装程序,选择install,即可完成安装。

配置环境变量:在系统变量下添加 变量名:ERLANG_HOME,变量值:C:\Program Files (x86)\erl6.1

二、安装rabbitMQ
rabbitmq-server-3.3.5.exe
安装完成增加环境变量,双击path,在其后面增加:;C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.3.5\sbin

启动start


cmd进到sbin目录,输入rabbitmq-service启动

或是直接找到rabbitMQ安装目录下C:\Program Files (x86)\RabbitMQ Server\rabbitmq_server-3.3.5\sbin

打开浏览器登录http://localhost:15672进入监视页面说明配置成功,用户名和密码:guest

配置成功以后就是发送消息,采用Exchange。

Rabbit的核心组件包含Queue(消息队列)和Exchanges两部分,Exchange的主要部分就是对信息进行路由,通过将消息队列绑定到Exchange上,则可以实现订阅形式的消息发布及Publish/Subscribe在这种模式下消息发布者只需要将信息发布到相应的Exchange中,而Exchange则自动将信息分发到不同的Queue当中。

在.Net环境下有基于RabbitMQ有很多有API的选择,最后选择了比较简单的EasyNetQ(http://easynetq.com/)

    /// <summary>
/// 消息服务器连接器
/// </summary>
public class BusBuilder
{
public static IBus CreateMessageBus()
{
//消息服务器连接字符串 string connString = "host=172.17.186.50:5672;virtualHost=rb;username=admin;password=123";
return RabbitHutch.CreateBus(connString);
// return RabbitHutch.CreateBus(connectionString.ConnectionString);
}
}
 /// <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)
{
//处理连接消息服务器异常
// MessageHelper.WriteFuntionExceptionLog("Publish", ex.Message + " | " + ex.StackTrace); } bus.Dispose();//与数据库connection类似,使用后记得销毁bus对象
}
    /// <summary>
/// 接收消息
/// </summary>
/// <param name="msg"></param>
public static void Subscribe(Message msg, IProcessMessage ipro)
{
//// 创建消息bus
IBus bus = BusBuilder.CreateMessageBus(); try
{
bus.Subscribe<Message>(msg.MessageID, message => ipro.ProcessMsg(message), x => x.WithTopic(msg.MessageRouter).WithArgument("x-ha-policy", "all")); }
catch (EasyNetQException ex)
{
//处理连接消息服务器异常
// MessageHelper.WriteFuntionExceptionLog("Subscribe", ex.Message + " | " + ex.StackTrace);
}
}

添加虚拟主机

添加用户

执行代码就会自动建立Exchanges,名字是根据项目名来的

点击新建的Exchanges进入新建queue

最后调用接口测试发送,代码如下:

  protected void Button1_Click(object sender, EventArgs e)
{
MQ.Message msg = new MQ.Message();
msg.MessageID = "testkey";
msg.MessageBody = "发送测试";
msg.MessageTitle = "hello world";
msg.MessageRouter = "testKey";
MQ.MQHelper.Publish(msg); }
msg.MessageRouter = "testKey"——这句配置很重要,取决于上一步的Routing Key.

推送消息成功!

源码下载:http://pan.baidu.com/s/1sjExnWh

RabbitMQ消息队列安装和配置以及推送消息的更多相关文章

  1. IOS 在不打开电话服务的时候,可以响应服务器的推送消息,从而接收服务器的推送消息

    在做即时通讯(基于xmpp框架)的时候遇到这样一个问题,就是在真机测试的时候,你按Home键返回桌面,在你返回桌面的时候,这是你的程序的挂起状态的,在你挂起的时候, 相当于你的程序是死的,程序的所有进 ...

  2. iOS监听模式系列之推送消息通知

    推送通知 和本地通知不同,推送通知是由应用服务提供商发起的,通过苹果的APNs(Apple Push Notification Server)发送到应用客户端.下面是苹果官方关于推送通知的过程示意图: ...

  3. 小程序推送消息(Template)

    最近搞小程序模拟推送消息,才发现小程序推送消息接口准备下线. 请注意,小程序模板消息接口将于2020年1月10日下线,开发者可使用订阅消息功能 咱们现在有需求,所以不管下不下,完成再说. 一:”获取a ...

  4. RabbitMQ消息队列之一:RabbitMQ的环境安装及配置

    RabbitMQ简介: MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们 ...

  5. SpringCloud之RabbitMQ消息队列原理及配置

    本篇章讲解RabbitMQ的用途.原理以及配置,RabbitMQ的安装请查看SpringCloud之RabbitMQ安装 一.MQ用途 1.同步变异步消息 场景:用户下单完成后,发送邮件和短信通知. ...

  6. 第二百九十一节,RabbitMQ多设备消息队列-安装与简介

    RabbitMQ多设备消息队列-安装与简介 RabbitMQ简介 解释RabbitMQ,就不得不提到AMQP(Advanced Message Queuing Protocol)协议. AMQP协议是 ...

  7. RabbitMQ 消息队列 安装及使用

    RabbitMQ 消息队列安装: linux版本:CentOS 7 安装第一步:先关闭防火墙 1.Centos7.x关闭防火墙 [root@rabbitmq /]# systemctl stop fi ...

  8. (四)RabbitMQ消息队列-服务详细配置与日常监控管理

    原文:(四)RabbitMQ消息队列-服务详细配置与日常监控管理 RabbitMQ服务管理 启动服务:rabbitmq-server -detached[ /usr/local/rabbitmq/sb ...

  9. (五)RabbitMQ消息队列-安装amqp扩展并订阅/发布Demo(PHP版)

    原文:(五)RabbitMQ消息队列-安装amqp扩展并订阅/发布Demo(PHP版) 本文将介绍在PHP中如何使用RabbitMQ来实现消息的订阅和发布.我使用的系统依然是Centos7,为了方便, ...

随机推荐

  1. HttpWebRequest上传文件(Excel等)

    //上传代码/// <summary> /// 文件上传 /// </summary> /// <param name="strAddress"> ...

  2. Android HttpClient框架get和post方式提交数据(非原创)

    1.fragment_main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android& ...

  3. SQL server根据值搜表名和字段

    DECLARE @what varchar(800) SET @what='lll' --要搜索的字符串 DECLARE @sql varchar(8000) DECLARE TableCursor ...

  4. Objective C—创建单例

    单例模式是在实际项目开发中用到比较多的一种设计模式,设计原理是整个系统只产生一个对象实例,通过一个统一的方法对外提供这个实例给外部使用. 在Java中,构造单例一般将类的构造函数声明为private类 ...

  5. Xcode的代码片段快捷方式-Code Snippet Library(代码片段库)

    最近换了新电脑,装上Xcode敲代码发现很多以前攒的Code Snippet忘记备份了,总结了一下Code Snippet的设置方法,且行且添加,慢慢积累吧. 如下图:   Title - Code ...

  6. Win8.1系统下安装nodeJS

    Nodejs简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又高效.Node.js ...

  7. (原)使用intel的ipp库计算卷积及相关

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5462631.html 参考网址: https://software.intel.com/zh-cn/n ...

  8. Python中的Copy和Deepcopy

    一,Python的对象: Python存在大量的对象,我们一般提到的对象都是C中的结构体在堆中申请的一块内存(以CPython为例),每一个对象都有ID,可以通过ID(Object)获得.对象的范围包 ...

  9. SlimDX和WPF的合作应用

    1.首先定义一个DX操作类 using System; using SlimDX; using SlimDX.Direct3D9; using System.Windows.Interop; usin ...

  10. H5本地存储

    在HTML5中可以把数据长期存储在客户端,使用的对象就是localStorage. localStorage常用方法有setItem.getItem.removeItem.clear. 下面是一个存储 ...