RabbitMQ是个健壮、易用、开源、支持多种操作系统和语言的message broker。

当然,一切的前提是机器里面正在运行着rabbitmq-server。

点击下面的图片下载:

rabbitMQ和AMQP的关系是什么样的?rabbitMQ负责哪部分?
如图所示,就是provider和consumer之间那一块。

message broker,比如ActiveMQ、RabbitMQ什么的,简单而言就是可以收发消息的。

我跟着官方的Tutorial简单写一个Hello World。
实现一个producer到queue到consumer的小程序。

不要忘了添加java client :

<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>3.3.4</version>
</dependency>

provider:

        private final static String QUEUE_NAME = "hello";

    public static void main(String[] args) throws IOException {

        //创建Connection
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel(); //定义目标队列
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello World!";
System.out.println(" [x] Sent '" + message + "'");
channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); channel.close();
connection.close();
}

Receiver的步骤与provider大致相同,只需要注意QUEUE_NAME要相同:

private final static String QUEUE_NAME = "hello";

public static void main(String[] argv) throws Exception {

    ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
Channel channel = connection.createChannel(); channel.queueDeclare(QUEUE_NAME, false, false, false, null); QueueingConsumer consumer = new QueueingConsumer(channel);
channel.basicConsume(QUEUE_NAME, true, consumer); while (true) {
QueueingConsumer.Delivery delivery = consumer.nextDelivery();
String message = new String(delivery.getBody());
System.out.println(" [x] Received '" + message + "'" + new Date());
}
}

如果不出意外的话,consumer可以正常打印出"Hello World!"。
(PS:磁盘太满也可能导致消息无法接收,可以在配置文件中设置disk_free_limit项。)

RabbitMQ - 介绍的更多相关文章

  1. RabbitMQ介绍及安装部署

    本节内容: RabbitMQ介绍 RabbitMQ运行原理 RabbitMQ重要术语 三种ExchangeType RabbitMQ集群种类 集群基本概念 镜像模式部署集群 一.RabbitMQ介绍 ...

  2. RabbitMQ介绍及windows下安装使用

    RebbitMQ介绍 RabbitMQ是一个由 Erlang (一种通用的面向并发的编程语言)开发的AMQP(Advanced Message Queue )的开源实现,Rabbit MQ 是建立在E ...

  3. .net RabbitMQ 介绍、安装、运行

    RabbitMQ介绍 什么是MQ Message Queue(简称:MQ),消息队列 顾名思义将内容存入到队列中,存入取出的原则是先进先出.后进后出. 其主要用途:不同进程Process/线程Thre ...

  4. RabbitMQ介绍6 - 其它

    深入话题 Exchange实现路由的方法 http://www.rabbitmq.com/blog/2010/09/14/very-fast-and-scalable-topic-routing-pa ...

  5. RabbitMQ介绍5 - 集群

    RabbitMQ内建集群机制,利用Erlang提供的开放电信平台(OTP,Open telecom Platform)通信框架,使得集群很容易进行横向扩展,提高系统吞吐量.这里只讨论集群的概念.原理, ...

  6. RabbitMQ介绍4 - 编程(C#客户端示例)

    C#终端的说明文档: http://www.rabbitmq.com/dotnet-api-guide.html 这里介绍使用RabbitMQ的几种典型场景. 1. 简单direct模式( http: ...

  7. RabbitMQ介绍3 - 运行和管理RabbitMQ

    安装.官方介绍:http://www.rabbitmq.com/download.html.一般产品环境会部署到Linux环境,但做为简单尝试,可以部署到Windows上(这里是部署介绍:http:/ ...

  8. RabbitMQ介绍2 - AMQP协议

    这一节介绍RabbitMQ的一些概念,当然也是AMQP协议的概念.官方网站也有详细解释,包括协议的命令: http://www.rabbitmq.com/tutorials/amqp-concepts ...

  9. python使用rabbitMQ介绍三(发布订阅模式)

    一.模式介绍 在前面的例子中,消息直接发送到queue中. 现在介绍的模式,消息发送到exchange中,消费者把队列绑定到exchange上. 发布-订阅模式是把消息广播到每个消费者,每个消费者接收 ...

  10. python使用rabbitMQ介绍二(工作队列模式)

    一模式介绍 第一章节的生产-消费者模式,是非常简单的模式,一发一收.在实际的应用中,消费者有的时候需要工作较长的时间,则需要增加消费者. 队列模型: 这时mq实现了一下几个功能: rabbitmq循环 ...

随机推荐

  1. windows测试登陆

    测试工具我使用2种(Medusa和hydra): 第一种:Medusa支持端口登录但是不支持rdp协议,意思就是可以验证密码是否正确,新用户不会创建家目录: 使用方法: medusa -M smbnt ...

  2. django中orm的简单操作

    数据库模型 from django.db import models # Create your models here. from django.db import models # Create ...

  3. 关于react的一些疑问点

    参考转载:链接:http://www.jianshu.com/p/83bda9cd8c67 1.refs <input type="text" ref="input ...

  4. 获取请求 header 中指定字段的值

    private function getHeader($name) {//获取请求头中$name的值 $name = 'HTTP_' . $name; foreach ($_SERVER as $ke ...

  5. linux命令提示符[root@localhost ~]#详解

    [root@localhost ~]#   1. @之前代表当前登录用户 在Linux中管理员用户是root,还有一些普通用户: 在此例中,root代表当前登录用户   2. @之后代表当前计算机主机 ...

  6. java字段中初始化的规律与如何用静态成员函数调用非静态成员

    java字段中初始化的规律: 执行以下代码,出现的结果是什么? class InitializeBlockClass{ { field=200; } public int field=100; pub ...

  7. python学习笔记1.3

    温度转换实例 #TempConvert.pyTempStr = input("请输入带有符号的温度值: ")if TempStr[-1] in ['F', 'f']:C = (ev ...

  8. css图片+文字浮动(文字包围效果)

    css图片+文字浮动(文字包围效果): 在网页中,我们有时想实现这个效果,但是 <div id="test"> <img src="gdimages/0 ...

  9. [转] vagrant学习笔记 - provision

    [From]  https://blog.csdn.net/54powerman/article/details/50684844 从字面上来看,provision是准备,实现的功能是在原生镜像的基础 ...

  10. CentOS&.NET Core初试-4-安装守护服务(Supervisor)

    系列目录 CentOS的安装和网卡的配置 安装.NET Core SDK和发布网站 Nginx的安装和配置 安装守护服务(Supervisor) Supervisor是什么? Supervisor 是 ...