好久没有写了,最近项目用到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. EffectiveC#16--垃圾最小化

    1.申请和释放一个基于堆内存的对象要花上更多的处理器时间. 所以当一个引用类型的局部变量在常规的函数调用中使用的非常频繁时应该把它提升为对象的成员(方法一) 2.当你把一个实现了IDisposable ...

  2. 《JavaScript 闯关记》之基本包装类型

    为了便于操作基本类型值,JavaScript 还提供了3个特殊的引用类型:Boolean.Number 和 String.实际上,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象 ...

  3. Jquery on() 动态绑定事件

    之前就一直受这个问题的困扰,在jQuery1.7版本之后添加了on方法,之前就了解过,其优越性高于live(),bind(),delegate()等方法,在此之前项目中想用这个来测试结果发现,居然动态 ...

  4. 练习使用jquery.并将验证强度的功能加到注册页面中

  5. PL/SQL文档

    http://www.oracle.com/technetwork/database/features/plsql/index.html 注册表学习 http://itlab.idcquan.com/ ...

  6. elasticsearch,http://ip:9200访问不到的解决办法

    现在解压elasticsearch之后,启动,通过http://localhost:9200可以访问的到,但是http://ip:9200访问不到,怎么办呢?带你解决,带你飞 修改elasticsea ...

  7. 二维计算几何基础题目泛做(SYX第一轮)

    题目1: POJ 2318 TOYS 题目大意: 给一个有n个挡板的盒子,从左到右空格编号为0...n.有好多玩具,问每个玩具在哪个空格里面. 算法讨论: 直接叉积判断就可以.注意在盒子的边界上面也算 ...

  8. http://www.cnblogs.com/yyyyy5101/archive/2011/03/11/1981078.html

    http://www.cnblogs.com/yyyyy5101/archive/2011/03/11/1981078.html

  9. 关于mysql中数据存储复合树形结构,查询时结果按树形结构输出

    1.主要思想:根据已有数据,规则性的造数据 select * FROM(select lId,strName,lId as lParentId,-1 as orderIdx from tbClassi ...

  10. sleep函数——Gevent源码分析

    gevent是一个异步I/O框架,当遇到I/O操作的时候,会自动切换任务,从而能异步地完成I/O操作 但是在测试的情况下,可以使用sleep函数来让gevent进行任务切换.示例如下: import ...