RabbitMQ是一个轻量级的消息代理中间件,支持多种消息通信协议,支持分布式部署,支持运行于多个操作系统,具有灵活、高可用等特性。RabbitMQ支持多种协议,其中最为重要的是高级消息队列协议(AMQP),它定义了“消息客户端”和“消息代理中间件”之间的通信协议,基于该协议,消息客户端与消息代理中间件可以不受开发语言、具体产品的约束。

AMQP的大致模型如下图所示:

生产者将消息传递给“消息代理(RabbitMQ服务器)”,它们之间会建立消息通道(Channel),消息由交换器(Exchange)先进行处理,再交给一个消息队列(Message Queue),最后消息队列将消息发给消息者。

一、下载RabbitMQ和Erlang

Windos下RabbitMQ的当前服务器最高版本为3.8.1,下载地址:https://www.rabbitmq.com/install-windows.html

RabbitMQ服务器使用的是Erlang语言,因此还需要下载Erlang,当前最高版本为22.1,
下载地址:http://erlang.org/download/,点击里面的文件名称otp_win64_22.1.exe进行下载。

二、配置

1、RabbitMQ安装完后会作为Windows服务启动。

2、开启插件管理

cmd进入安装目录的sbin目录,输入下面命令进行安装:
rabbitmq-plugins enable rabbitmq_management

输入下面命令可以查看插件状态:
rabbitmq-plugins list

3、登录Web管理界面

第2步开启插件后,这个地址可以访问: http://localhost:15672/
输入默认的用户名和密码(都是guest)登录,登录后界面如下

备注:RabbitMQ的另一个端口5672用于客户端通信。

、Java实现生产者和消费者例子

对于服务器来说,消息生产者和消费者都属于客户端,它们与服务器之间通过AMQP协议进行通信。AMQP不受语言的限制,客户端可以使用不同的编程语言实现。下面用Java编写客户端。

新建一个Maven项目,pom.xml 加入依赖:

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

1、编写生产者

新建消息生产者,向服务器发送消息。

package com.example.rabbittest;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory; import java.io.IOException;
import java.util.concurrent.TimeoutException; public class Send {
public static void main(String[] args) throws IOException, TimeoutException {
//创建连接
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
//建立通道
Channel channel = connection.createChannel();
//声明队列
String queueName = "hello";
channel.queueDeclare(queueName,false,false,false,null);
String message = "hello world";
//消息发布
channel.basicPublish("", queueName, null, message.getBytes());
//关闭通道和连接
channel.close();
connection.close();
}
}

上面代码没有声明交换器,会使用默认的交换器。

运行代码后,登录http://localhost:15672/,单击Queues选项卡,可以看到创建了hello队列。

2、编写消费者

新建消息消费者(和生产者在同一个项目中),接受服务器消息。

package com.example.rabbittest;

import com.rabbitmq.client.*;

import java.io.IOException;
import java.util.concurrent.TimeoutException; public class Receive {
public static void main(String[] args) throws IOException, TimeoutException {
//创建连接
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
Connection connection = factory.newConnection();
//建立通道
Channel channel = connection.createChannel();
//声明队列
String queueName = "hello";
channel.queueDeclare(queueName,false,false,false,null);
String message = "hello world";
//消息发布
Consumer consumer = new DefaultConsumer(channel){
@Override
public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
String message = new String(body, "UTF-8");
System.out.println("接收的消息:" + message);
}
};
channel.basicConsume(queueName, true, consumer);
}
}

运行代码后,打开RabbitMQ控制台,单击hello队列,可以看到有相应的消费者。

Windows下RabbitMQ 的下载、配置、Java实现生产者和消费者例子的更多相关文章

  1. Windows下RabbitMQ安装及配置

    下载rabbitmq_server以及Erlang OTP平台 安装好了启动服务就行了 也可用命令 net start RabbitMQ  或  net stop RabbitMQ 配置用户添加环境变 ...

  2. windows下spark开发环境配置

    http://www.cnblogs.com/davidwang456/p/5032766.html windows下spark开发环境配置 --本篇随笔由同事葛同学提供. windows下spark ...

  3. JAVA 基础开发环境 vscode 搭建 Windows下VSCode编译运行简单java

    JAVA 基础开发环境 vscode 搭建 来源 https://www.cnblogs.com/freewsf/p/7744728.html 对于使用 Visual Studio Code 的 Ja ...

  4. solr在windows下的安装及配置

    solr在windows下的安装及配置 首先,solr是基于Java开发的,所以使用的话需要先进行java环境的配置,在Java环境配置好之后就可以去http://www.apache.org/dyn ...

  5. windows下双击可运行的Java软件打包方案(转)

    出处: http://www.cnblogs.com/shiyangxt/ 刚开始学Java的时候,挺郁闷的,写出来的java类文件,需要dos下编译,然后再dos下运行看效果.这使初学者常常 觉得麻 ...

  6. Windows下pry安装和配置

    Windows下pry安装和配置 pry是一个增强型的交互式命令行工具,比irb强大. 有自动完成功能,自动缩进,有颜色.有更强大的调试功能. pry 安装很简单. 在终端输入: gem instal ...

  7. 【Objective-C】Windows下Objective-C开发环境配置

    [Objective-C]Windows下Objective-C开发环境配置 ftp://ftpmain.gnustep.org/pub/gnustep/binaries/windows/   最近打 ...

  8. Windows下Apache+mod_python+Django配置

    Windows下Apache+mod_python+Django配置 Apache 首先要安装Apache,我安装的版本是2.2.*: Python python肯定是要安装的,我安装的版本是2.5的 ...

  9. Mysql在windows下的免安装配置步骤和重新安装的步骤

    windows下mysql免安装配置 1. 下载mysql免安装压缩包 下载mysql-5.6.22-winx64.zip 解压到本地D:\mysql-5.6.22-winx64 2. 修改配置文件 ...

随机推荐

  1. luogu P1358 扑克牌

    题目描述 组合数学是数学的重要组成部分,是一门研究离散对象的科学,它主要研究满足一定条件的组态(也称组合模型)的存在.计数以及构造等方面的问题.组合数学的主要内容有组合计数.组合设计.组合矩阵.组合优 ...

  2. hadoop format 重新格式化

    前文:如果格式化完之后,使用jps命令发现进程都已经启动,但是使用web页面打不开hadoop的网页,可能原因就是防火墙没关或者是哪个配置过程配错了. 1.关闭防火墙 一般最好是关闭防火墙比较关闭. ...

  3. JS的引入方式_变量的使用_变量的类型

    JS的俩种引入方式: 1. <!--js的引入方式1--> <script> /*网页中的弹框*/ alert("js的学习!!") </script ...

  4. [TimLinux] JavaScript AJAX如何重定向页面

    1. AJAX 异步JavaScript + XML,用于不通过页面from表单,来发送数据到后端服务器中 2. 如何重定向 服务器后端无法直接将页面重定向,因为服务器后端传回的任何数据,都将被XML ...

  5. docker-compose部署

    一.部署compose docker compose可以方便我们快捷高效地管理容器的启动.停止.重启等操作,它类似于linux下的shell脚本,基于yaml语法,在该文件里我们可以描述应用的架构,比 ...

  6. 建议收藏:命令创建.net core3.0 web应用详解(超详细教程)

    你是不是曾经膜拜那些敲几行代码就可以创建项目的大神,学习了命令创建项目你也可以成为大神,其实命令创建项目很简单. (1)cmd命令行到你打算创建项目的位置   (2)在该目录下创建解决方案文件夹JIY ...

  7. HTTP 错误 500.19 - Internal Server Error 错误代码 0x80070005 由于权限不足而无法读取配置文件

    HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面,因为该页的相关配置数据无效. 模块 IIS Web Core 通知 未知 处理程序 尚未确定 错误代码 ...

  8. 【TCP/IP网络编程】:04基于TCP的服务器端/客户端

    摘要:结合前面所讲述的知识,本篇文章主要介绍了简单服务器端和客户端实现的框架流程及相关函数接口. 理解TCP和UDP 根据数据传输方式的不同,基于网络协议的套接字一般分为TCP套接字和UDP套接字(本 ...

  9. k8s 开船记:升级为豪华邮轮(高可用集群)与遇到奇怪故障(dns解析异常)

    之前我们搭建的 k8s 集群只用了1台 master ,可用性不高,这两天开始搭建高可用集群,但由于之前用 kubeadm 命令创建集群时没有使用 --control-plane-endpoint 参 ...

  10. cesium 实现风场图效果(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...