Windows下RabbitMQ 的下载、配置、Java实现生产者和消费者例子
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实现生产者和消费者例子的更多相关文章
- Windows下RabbitMQ安装及配置
下载rabbitmq_server以及Erlang OTP平台 安装好了启动服务就行了 也可用命令 net start RabbitMQ 或 net stop RabbitMQ 配置用户添加环境变 ...
- windows下spark开发环境配置
http://www.cnblogs.com/davidwang456/p/5032766.html windows下spark开发环境配置 --本篇随笔由同事葛同学提供. windows下spark ...
- JAVA 基础开发环境 vscode 搭建 Windows下VSCode编译运行简单java
JAVA 基础开发环境 vscode 搭建 来源 https://www.cnblogs.com/freewsf/p/7744728.html 对于使用 Visual Studio Code 的 Ja ...
- solr在windows下的安装及配置
solr在windows下的安装及配置 首先,solr是基于Java开发的,所以使用的话需要先进行java环境的配置,在Java环境配置好之后就可以去http://www.apache.org/dyn ...
- windows下双击可运行的Java软件打包方案(转)
出处: http://www.cnblogs.com/shiyangxt/ 刚开始学Java的时候,挺郁闷的,写出来的java类文件,需要dos下编译,然后再dos下运行看效果.这使初学者常常 觉得麻 ...
- Windows下pry安装和配置
Windows下pry安装和配置 pry是一个增强型的交互式命令行工具,比irb强大. 有自动完成功能,自动缩进,有颜色.有更强大的调试功能. pry 安装很简单. 在终端输入: gem instal ...
- 【Objective-C】Windows下Objective-C开发环境配置
[Objective-C]Windows下Objective-C开发环境配置 ftp://ftpmain.gnustep.org/pub/gnustep/binaries/windows/ 最近打 ...
- Windows下Apache+mod_python+Django配置
Windows下Apache+mod_python+Django配置 Apache 首先要安装Apache,我安装的版本是2.2.*: Python python肯定是要安装的,我安装的版本是2.5的 ...
- Mysql在windows下的免安装配置步骤和重新安装的步骤
windows下mysql免安装配置 1. 下载mysql免安装压缩包 下载mysql-5.6.22-winx64.zip 解压到本地D:\mysql-5.6.22-winx64 2. 修改配置文件 ...
随机推荐
- 【CSS】305- [译] Web 使用 CSS Shapes 的艺术设计
%; %; %; %; 0, 0 100%, 100% 100%); %; %; % 0, 0 100%, 100% 100%); %; %; ) p:nth-of-type(1)::before { ...
- Jmeter性能测试配置
目录 Jmeter检查点/断言 Jmeter事务 Jmeter集合点 Jmeter检查点/断言 在上一章节中,我们通过调试脚本,通过人工验证脚本可以完成业务功能, 但在性能测试中,我们希望能通过自动验 ...
- Cloudflare Workers 部署跨域代理服务
项目源码:https://github.com/netnr/workers 发布链接:https://cors.zme.ink 使用文档:https://developers.cloudflare.c ...
- Swing JTable使用
package cn.ychx; import java.awt.Dimension; import java.awt.Toolkit; import java.sql.Connection; imp ...
- oracle管理角色和权限
介绍 这一部分主要看看oracle中如何管理权限和角色,权限和角色的区别在哪里. 当刚刚建立用户时,用户没有任何权限,也不能执行任何操作.如果要执行某种特定的数据库操作,则必需为其授予系统的权限:如果 ...
- 基于ATxmega128的ASF串口应用
1.编辑串口的配置参数,一般将这些参数放在conf_usart.h配置头文件中,本程序将这些参数放在user_board.h头文件中 #define USART_SERIAL &USARTD0 ...
- CCF-CSP题解 201703-3 Markdown
要求实现简易的Markdown到Html格式的转换. 主要就是字符串处理.以空行划分各个区块,区块内部字符的输出用一个\(print\_buf\)实现,至于强调和超链接的嵌套,则可以递归实现. 注意用 ...
- 图文结合深入理解JS中的this值
文章目录 Js 中奇妙的this值 1. 初探this 2. this指向总结 2.1 普通函数调用 2.2 对象的方法调用 2.3 构造函数调用 2.4 利用call,apply,bind方法调用函 ...
- 【CV现状-3.1】图像分割
#磨染的初心--计算机视觉的现状 [这一系列文章是关于计算机视觉的反思,希望能引起一些人的共鸣.可以随意传播,随意喷.所涉及的内容过多,将按如下内容划分章节.已经完成的会逐渐加上链接.] 缘起 三维感 ...
- C#线程学习笔记十:async & await入门三
一.Task.Yield Task.Yield简单来说就是创建时就已经完成的Task,或者说执行时间为0的Task,或者说是空任务,也就是在创建时就将Task的IsCompeted值设置为0. 我们知 ...