环境搭建:

RabitMQ是用Elang编写的,虽然Elang本身是跨平台的,但也同时意味着搭建Rabit环境需要首先配置Elang环境。配置RabitMQ的网上教程还比较多的:

在Linux下配置也是差不多的,可以参考这篇文档: RabbitMQ基础

总结下就是如下步骤:

  1. 安装Elng运行环境
  2. 安装Elang
  3. 安装RabbitMQ
  4. 配置环境变量
  5. 启动RabbitMQServer,并配置为服务
  6. 配置可视化插件
  7. 创建用户,设置密码、分配角色
  8. 设置用户VirtualHost访问权限

配置完成后,可以从Web控制台访问: http://192.168.241.128:15672/

Docker方式环境搭建

Docker环境下安装就比较简单了,安装带部署一条命令直接到位:

  docker run -d --name rabbit -p 15672:15672 -p 5672:5672 rabbitmq:management

默认用户名和密码是guest/guest。如果要设置用户名和权限,可以通过环境变量的方式设置:

  docker run -d --name rabbit -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management

更多的设置可以参考网上文章:使用Docker部署RabbitMQ集群

安装客户端库:

Install-Package RabbitMQ.Client

创建Connection和Channel

首先还是看看RabbitMQ的模型图:

  

一个会话是一个channel,所有操作都是基于channel进行的。

    var factory = new ConnectionFactory
    {
        UserName = "guest", Password = "guest", VirtualHost = "/", HostName = "192.168.241.128"
    };
    
    var conn    = factory.CreateConnection();
    var channel = conn.CreateModel();

创建Exchange、Queue和Bind

    channel.ExchangeDeclare("exchange1", ExchangeType.Direct);
    channel.QueueDeclare("queue1", false, false, false, null);
    channel.QueueBind("queue1", "exchange1", "route1", null);

发布消息

消息是发布到exchange上,并且需要指定路由。

    var message = DateTime.Now.ToString();
    byte[] data = Encoding.UTF8.GetBytes(message);
    channel.BasicPublish("exchange1", "route1", null, data);

接收消息

接收消息只需要指定queue即可。

    var consumer = new EventingBasicConsumer(channel);
    consumer.Received += (model, ea) =>
    {
        var body    = ea.Body;
        var message = Encoding.UTF8.GetString(body);
        Console.WriteLine($" [x] Received {message}");
    };
    channel.BasicConsume(queue: "queue1", autoAck: true, consumer: consumer);

接收消息主要是通过BasicConsume函数进行,它需要指定一个消费者IBasicConsumer,这里我用的是基于事件的EventingBasicConsumer,系统默认还有许多其它的实现,这里就不一一举例了。

业务模型

我这里只是简单的演示了API的使用,具体的各业务模型可以参考官方的文档。

RabbitMQ简单使用的更多相关文章

  1. rabbitmq简单收发服务搭建

    消息发送.接收简单代码示例 mq.xml //rabbitmq config spring.rabbitmq.host=ip:host spring.rabbitmq.username= spring ...

  2. RabbitMQ简单应用の简单队列

    (1)首先创建一个maven项目: pom.xml,重点是配置RabbitMQ <dependencies> <dependency> <groupId>junit ...

  3. AMQP消息队列之RabbitMQ简单示例

    前面一篇文章讲了如何快速搭建一个ActiveMQ的示例程序,ActiveMQ是JMS的实现,那这篇文章就再看下另外一种消息队列AMQP的代表实现RabbitMQ的简单示例吧.在具体讲解之前,先通过一个 ...

  4. rabbitmq简单实例

    JMS组件:activemq(慢)AMQP组件(advance message queue protocol):rabbitmq和kafka 一..消息队列解决了什么问题?异步处理应用解耦流量削锋日志 ...

  5. RabbitMQ 简单的消息发送与接收

    RabbitMQ是建立在AMQP(Advanced Message Queuing Protocol,高级消息队列协议)基础上的,而AMQP是建立在TCP协议之上的. 因此,RabbitMQ是需要建立 ...

  6. RabbitMQ基础组件和SpringBoot整合RabbitMQ简单示例

    交换器(Exchange) 交换器就像路由器,我们先是把消息发到交换器,然后交换器再根据绑定键(binding key)和生产者发送消息时的路由键routingKey, 按照交换类型Exchange ...

  7. PHP 下基于 php-amqp 扩展的 RabbitMQ 简单用例 (四) -- Push API 和 Pull API

    RabbitMQ 中针对消息的分发提供了 Push API (订阅模式) 和 Pull API (主动获取) 两种模式. 在 PHP 中, 这两种模式分别通过 AMQPQueue 类中的 consum ...

  8. rabbitmq 简单示例(Hello World)

    一:消息中间件: AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计 RabbitMQ是实现AMQP( ...

  9. RabbitMQ学习笔记(2)----RabbitMQ简单队列(Hello World)的使用

    1. 简单队列结构图 2. 引入依赖 pom.xml文件 <dependency> <groupId>com.rabbitmq</groupId> <arti ...

随机推荐

  1. iOS8 自定义navigationbar 以及 UIBarButtonItem 边距问题

    一.自定义navigationbar - (void)initNavigationBar{ [self.navigationController setNavigationBarHidden:YES] ...

  2. Miller_Rabin 素数测试

    费马定理的逆定理几乎可以用来判断一个数是否为素数,但是有一些数是判断不出来的,因此,Miller_Rabin测试方法对费马的测试过程做了改进,克服其存在的问题. 推理过程如下(摘自维基百科): 摘自另 ...

  3. Quartus II 破解教程—FPGA入门教程【钛白Logic】

    这一节主要说明如何破解Quartus II 13.1.首先找到我们提供的破解工具,这里我们的电脑是64位的,所以使用64位破解器.如下图. 第一步:将破解工具拷贝到安装目录下“D:\altera\13 ...

  4. Linux中断(interrupt)子系统之一:中断系统基本原理【转】

    转自:http://blog.csdn.net/droidphone/article/details/7445825 这个中断系列文章主要针对移动设备中的Linux进行讨论,文中的例子基本都是基于AR ...

  5. idea如何导入一个maven项目

    1.import project 2.选择maven项目 3.选择第二个external moudle,选择maven, 4.点击next,一次点击1,2,3,4 5.设置maven环境 6.点击ok ...

  6. .NetCore使用FluentValidation实现友好验证提示

    Nuget包导入FluentValidation.AspNetCore 官方的用法是在services中添加如下来操作 services.AddMvc().AddFluentValidation(co ...

  7. Java第三阶段学习(十、XML学习)

    一.XML学习 1.模拟Servlet执行 在学习完前端及java与数据库后,将进行WEB编程阶段的学习.在WEB编程中,可以通过浏览器访问WEB服务器上的数据.这时WEB服务器就相当于另一台计算机. ...

  8. vue报错 ModuleBuildError: Module build failed: Error: `sass-loader` requires `node-sass` >=4. Please install a compatible version.

    解决方法: 输入命令:cnpm install node-sass@latest

  9. 插件bootstrap-table

    基于Metronic的Bootstrap开发框架经验总结(16)-- 使用插件bootstrap-table实现表格记录的查询.分页.排序等处理 在业务系统开发中,对表格记录的查询.分页.排序等处理是 ...

  10. vuejs递归组件

    vuejs学习--递归组件   前言 学习vue有一段时间了,最近使用vue做了一套后台管理系统,其中使用最多就是递归组件,也因为自己对官方文档的不熟悉使得自己踩了不少坑,今天写出来和大家一起分享. ...