首先,主机一是window系统,虚拟机二 ubuntu,

ubuntu部署了rabbitmq服务端.默认监听5672端口.

由于rabbitmq内部有严格的权限系统,使用之前必须配置好权限.

默认网页是不允许访问的,需要增加一个用户修改一下权限,代码如下:

 添加用户:rabbitmqctl add_user wc wc

 添加权限:rabbitmqctl set_permissions -p "/" wc ".*" ".*" ".*"

修改用户角色rabbitmqctl set_user_tags wc administrator

 然后就可以远程访问了,然后可直接配置用户权限等信息。

使用C#编写 消费者和生产者

首先使用nuget获取rabbitmq.

生产者代码:

using RabbitMQ.Client;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace RMQ_Client
{
class Program
{
static void Main(string[] args)
{
var factory = new ConnectionFactory() { HostName = "rabbitmq server ip", UserName = "wc", Password = "wc" };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
//定义队列(hello为队列名)
channel.QueueDeclare("hello", false, false, false, null);
//发送到队列的消息,包含时间戳
string message = "Hello World!" + "_" + DateTime.Now.ToString();
var body = Encoding.UTF8.GetBytes(message);
channel.BasicPublish("", "hello", null, body);
Console.WriteLine(" [x] Sent {0}", message);
}
}
}
}
}

消费者代码:

using RabbitMQ.Client;
using RabbitMQ.Client.Events;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace RMQ_Server
{
class Program
{
static void Main(string[] args)
{
var factory = new ConnectionFactory() { HostName = "rabbitmq server ip", UserName = "wc", Password = "wc" };
using (var connection = factory.CreateConnection())
{
using (var channel = connection.CreateModel())
{
//定义队列(hello为队列名)
channel.QueueDeclare("hello", false, false, false, null); var consumer = new QueueingBasicConsumer(channel);
channel.BasicConsume("hello", true, consumer); Console.WriteLine(" [*] Waiting for messages." +
"To exit press CTRL+C");
while (true)
{
//接受客户端发送的消息并打印出来
var ea = (BasicDeliverEventArgs)consumer.Queue.Dequeue(); var body = ea.Body;
var message = Encoding.UTF8.GetString(body);
Console.WriteLine(" [x] Received {0}", message);
}
}
}
}
}
}

rabbitmq (一)用法的更多相关文章

  1. RabbitMQ基本用法、消息分发模式、消息持久化、广播模式

    RabbitMQ基本用法 进程queue用于同一父进程创建的子进程间的通信 而RabbitMQ可以在不同父进程间通信(例如在word和QQ间通信) 示例代码 生产端(发送) import pika c ...

  2. RabbitMQ EasyNetq 用法

    EasyNETQ帮助类 public class MQHelper { /// <summary> /// 发送消息 /// </summary> public static ...

  3. Rabbitmq概念用法

    MQ全称为Message Queue, 是一种分布式应用程序的的通信方法,它是消费-生产者模型的一个典型的代表,producer往消息队列中不断写入消息,而另一端consumer则可以读取或者订阅队列 ...

  4. redis&rabbitMQ安装

    前言: 学习python已经有一段时间了,最近在学twisted(博客:twisted安装),redis,rabbitMQ感觉有点难度,所以还是写下博客整理下. 一.Redis的安装 redis是一种 ...

  5. 中小型研发团队架构实践六:如何用好消息队列RabbitMQ?

    一.写在前面 使用过分布式中间件的人都知道,程序员使用起来并不复杂,常用的客户端 API 就那么几个,比我们日常编写程序时用到的 API 要少得多.但是分布式中间件在中小研发团队中使用得并不多,为什么 ...

  6. window下安装RabbitMQ

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

  7. rabbitmq的简单介绍一

    该博客的主要讲解了以下几种rabbitmq的用法1.实现简单的生产者发送消息给消费者2.实现序列持久化3.实现消息持久化4.实现消息公平分发5.实现广播6.实现组播7.实现细分组播 先来看下rabbi ...

  8. 中小研发团队架构实践之RabbitMQ快速入门及应用

    原文:中小研发团队架构实践之RabbitMQ快速入门及应用 使用过分布式中间件的人都知道,程序员使用起来并不复杂,常用的客户端API就那么几个,比我们日常编写程序时用到的API要少得多.但是分布式中间 ...

  9. Python之操作RabbitMQ

    RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应用程序 ...

随机推荐

  1. const static extern

    http://wenku.baidu.com/link?url=saMJ3WpR_Lili2oflaIK-xK7wkQhtP2I-FdEX6I_XjmNxl7m0Z8SYHJtfqyXYkSmok8h ...

  2. two week summary

    from collections import Iteratorfrom collections import Iterabl dic = {'a':"a","91a&q ...

  3. ansible的管理与剧本

    首先我们安装一个ansible. 在7版本,直接用yum安装就可以 yum -y install ansible 然后清空ansible的配置文件,在里面写入自己需要管理的服务器的ip和相应的登陆密码 ...

  4. 精确值避免使用float和double,使用BigDecimal

    实现将double类型的值转换为BigDecimal类型的值的不同途径以及各途径间的区别 一:有人可能认为在 Java 中写入 new BigDecimal(0.1) 所创建的 BigDecimal  ...

  5. Java容器解析系列(3) List AbstractList ListIterator RandomAccess fail-fast机制 详解

    做为数据结构学习的常规,肯定是先学习线性表,也就是Java中的List,开始 Java中List相关的类关系图如下: 此篇作为对Java中相关类的开篇.从上图中可以看出,List和AbstractLi ...

  6. 2017-9-3模拟赛T2 取数(win)

    题目 题解 做法1: 直接暴力枚举每个数是否被选出,计算平均数-中位数,并与当前答案进行比较.复杂度O(2^n),能过60%的数据. 做法2: 将每个数排序后枚举中位数. 首先,取奇数个数一定更优.容 ...

  7. VS Code 工具配置和格式化

    { "onSave": true, "javascript": { "indent_size": 2, "indent_char& ...

  8. mysql数据库简单入门

    1.xampp  跨平台 优点:兼容性高 2. apache(服务器) 著名的集成环境(也叫集成安装包) 功能:一般在网站上运行,优点:稳定 缺点:性能上有瓶颈 nginx 优点:快 3. mysql ...

  9. ES5和ES6中关于import & export的书写方式的区别

    ES6中输出变量的写法 情景1:单个变量 输出 export const less = 'less' 引用 import {less} from '../index.js' 情景2:多个变量 输出: ...

  10. hdu5003 Osu!排序实现水题

    Osu! is a famous music game that attracts a lot of people. In osu!, there is a performance scoring s ...