安装Socat安装RabbitMQ
在线安装依赖环境:
yum install gcc
yum install socat
yum install openssl
yum install openssl-devel
mkdir /rabbitmq && cd /rabbitmq
# 上传 erlang-22.0.7-1.el7.x86_64.rpm 安装包上传
# 安装
rpm -ivh erlang-22.0.7-1.el7.x86_64.rpm
3. 安装RabbitMQ
cd /rabbitmq
# 上传 rabbitmq-server-3.7.17-1.el7.noarch.rpm 安装包
上传
# 安装
rpm -ivh rabbitmq-server-3.7.17-1.el7.noarch.rpm
4. 开启管理界面及配置
# 开启管理界面
rabbitmq-plugins enable rabbitmq_management
# 配置远程可使用guest登录mq
cd /usr/share/doc/rabbitmq-server-3.7.17
cp rabbitmq.config.example /etc/rabbitmq/rabbitmq.config
# 修改配置文件
vi /etc/rabbitmq/rabbitmq.config
5. 启动
centos6用这个命令:
/sbin/service rabbitmq-server restart
centos7用这个命令:
systemctl start rabbitmq-server
6. 配置虚拟主机及用户
6.1. 用户角色
角色说明:
1、 超级管理员(administrator)
可登陆管理控制台,可查看所有的信息,并且可以对用户,策略(policy)进行操作。
2、 监控者(monitoring)
可登陆管理控制台,同时可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
3、 策略制定者(policymaker)
可登陆管理控制台, 同时可以对policy进行管理。但无法查看节点的相关信息(上图红框标识的部分)。
4、 普通管理者(management)
仅可登陆管理控制台,无法看到节点信息,也无法对策略进行管理。
5、 其他
无法登陆管理控制台,通常就是普通的生产者和消费者
![](/assets/blank.gif)
java程序连接RabbitMQ服务
![](/assets/blank.gif)
代码--生产者
package com.wwc;import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection; import com.rabbitmq.client.ConnectionFactory;public class dome01 {public static void main(String[] args) throws Exception{ConnectionFactory connectionFactory = new ConnectionFactory();//设置rabbitMQ服务器的地址 默认localhostconnectionFactory.setHost("192.168.1.130");//设置rabbitMQ的端口号 默认5672connectionFactory.setPort(5672);//设置账号和密码 默认guestconnectionFactory.setUsername("guest");connectionFactory.setPassword("guest");//设置虚拟主机名 默认为 /connectionFactory.setVirtualHost("guest");//获取连接通道Connection connection = connectionFactory.newConnection();//获取channel信道Channel channel = connection.createChannel();//创建队列// 如果该队列名不存在则自动创建,存在则不创建//String queue,队列名//boolean durable,是否持久化//boolean exclusive,(独占)声明队列同一时间只能保 证一个连接,且该队列只有被这一个连接使用。//boolean autoDelete,是否自动删除//Map<String, Object> arguments: 其他参数channel.queueDeclare("simple_queue",true,false,false, null);//发送消息到队列/*** String exchange,把消息发给哪个交换机--简单模式没 有交换机""* String routingKey,消息绑定的路由key 如果为简单模 式 默认写为队列名称* BasicProperties props, 消息的属性* byte[] body: 消息的内容*/String msg="hello world~~~~3";channel.basicPublish("","simple_queue",null,msg.getBytes());connection.close();} }
package com.wwc;import com.rabbitmq.client.*;import java.io.IOException;public class xiaofei {public static void main(String[] args)throws Exception {ConnectionFactory factory=new ConnectionFactory();//设置rabbitMQ服务器的地址 默认localhostfactory.setHost("192.168.1.130");//设置rabbitMQ的端口号 默认5672factory.setPort(5672);//设置账号和密码 默认guestfactory.setPassword("guest");factory.setUsername("guest");//设置虚拟主机名 默认为 /factory.setVirtualHost("guest");//获取连接通道Connection connection = factory.newConnection();//获取channel信道Channel channel = connection.createChannel();//创建队列// 如果该队列名不存在则自动创建,存在则不创建//String queue 监听得队列名称//autoAck 是否自动确定消息//Consumer callback: 监听到消息后触发的回调函数DefaultConsumer callback = new DefaultConsumer(channel){//一定有消息就会触发该方法//body:表示消息的内容@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {System.out.println("接受的消息内容:"+new String(body));}};//发送消息到队列/*** String exchange,把消息发给哪个交换机--简单模式没 有交换机""* String routingKey,消息绑定的路由key 如果为简单模 式 默认写为队列名称* BasicProperties props, 消息的属性* byte[] body: 消息的内容*/channel.basicConsume("simple_queue",true,callback);}}
![](/assets/blank.gif)
public class dao1 {public static void main(String[] args) throws Exception{ConnectionFactory connectionFactory = new ConnectionFactory();//设置rabbitMQ服务器的地址 默认localhostconnectionFactory.setHost("192.168.1.130");//设置rabbitMQ的端口号 默认5672connectionFactory.setPort(5672);//设置账号和密码 默认guestconnectionFactory.setUsername("guest");connectionFactory.setPassword("guest");//设置虚拟主机名 默认为 /connectionFactory.setVirtualHost("/");//获取连接通道Connection connection = connectionFactory.newConnection();//获取channel信道Channel channel = connection.createChannel();//创建队列// 如果该队列名不存在则自动创建,存在则不创建//String queue,队列名//boolean durable,是否持久化//boolean exclusive,(独占)声明队列同一时间只能保 证一个连接,且该队列只有被这一个连接使用。//boolean autoDelete,是否自动删除//Map<String, Object> arguments: 其他参数channel.queueDeclare("Work_queue",true,false,false, null);//创建交换机/* String exchange,交换机的名称48 BuiltinExchangeType type,交换机的种类49 boolean durable:是否持久化50**///发送消息到队列/*** String exchange,把消息发给哪个交换机--简单模式没 有交换机""* String routingKey,消息绑定的路由key 如果为简单模 式 默认写为队列名称* BasicProperties props, 消息的属性* byte[] body: 消息的内容*/for(int i=0;i<10;i++) {String msg = "Worker msg======="+i;channel.basicPublish("","Work_queue",null,msg.getBytes());}connection.close();} }
消费者
public class xiaofei11 {public static void main(String[] args)throws Exception {ConnectionFactory factory=new ConnectionFactory();//设置rabbitMQ服务器的地址 默认localhostfactory.setHost("192.168.1.130");//设置rabbitMQ的端口号 默认5672factory.setPort(5672);//设置账号和密码 默认guestfactory.setPassword("guest");factory.setUsername("guest");//设置虚拟主机名 默认为 /factory.setVirtualHost("/");//获取连接通道Connection connection = factory.newConnection();//获取channel信道Channel channel = connection.createChannel();//创建队列// 如果该队列名不存在则自动创建,存在则不创建//String queue 监听得队列名称//autoAck 是否自动确定消息//Consumer callback: 监听到消息后触发的回调函数DefaultConsumer callback = new DefaultConsumer(channel){//一定有消息就会触发该方法//body:表示消息的内容@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {System.out.println("接受的消息内容:"+new String(body));}};//发送消息到队列/*** String exchange,把消息发给哪个交换机--简单模式没 有交换机""* String routingKey,消息绑定的路由key 如果为简单模 式 默认写为队列名称* BasicProperties props, 消息的属性* byte[] body: 消息的内容*/channel.basicConsume("Work_queue",true,callback);}}
生产者
public class dao {public static void main(String[] args) throws Exception{ConnectionFactory connectionFactory = new ConnectionFactory();//设置rabbitMQ服务器的地址 默认localhostconnectionFactory.setHost("192.168.1.130");//设置rabbitMQ的端口号 默认5672connectionFactory.setPort(5672);//设置账号和密码 默认guestconnectionFactory.setUsername("guest");connectionFactory.setPassword("guest");//设置虚拟主机名 默认为 /connectionFactory.setVirtualHost("/");//获取连接通道Connection connection = connectionFactory.newConnection();//获取channel信道Channel channel = connection.createChannel();//创建队列// 如果该队列名不存在则自动创建,存在则不创建//String queue,队列名//boolean durable,是否持久化//boolean exclusive,(独占)声明队列同一时间只能保 证一个连接,且该队列只有被这一个连接使用。//boolean autoDelete,是否自动删除//Map<String, Object> arguments: 其他参数channel.queueDeclare("work_queue",true,false,false, null);//发送消息到队列/*** String exchange,把消息发给哪个交换机--简单模式没 有交换机""* String routingKey,消息绑定的路由key 如果为简单模 式 默认写为队列名称* BasicProperties props, 消息的属性* byte[] body: 消息的内容*/for(int i=0;i<10;i++) {String msg = "Worker msg======="+i;channel.basicPublish("","work_queue",null,msg.getBytes());}connection.close();} }
消费者
public class xiaofei1 {public static void main(String[] args)throws Exception {ConnectionFactory factory=new ConnectionFactory();//设置rabbitMQ服务器的地址 默认localhostfactory.setHost("192.168.1.130");//设置rabbitMQ的端口号 默认5672factory.setPort(5672);//设置账号和密码 默认guestfactory.setPassword("guest");factory.setUsername("guest");//设置虚拟主机名 默认为 /factory.setVirtualHost("/");//获取连接通道Connection connection = factory.newConnection();//获取channel信道Channel channel = connection.createChannel();//创建队列// 如果该队列名不存在则自动创建,存在则不创建//String queue 监听得队列名称//autoAck 是否自动确定消息//Consumer callback: 监听到消息后触发的回调函数DefaultConsumer callback = new DefaultConsumer(channel){//一定有消息就会触发该方法//body:表示消息的内容@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {System.out.println("接受的消息内容:"+new String(body));}};//发送消息到队列/*** String exchange,把消息发给哪个交换机--简单模式没 有交换机""* String routingKey,消息绑定的路由key 如果为简单模 式 默认写为队列名称* BasicProperties props, 消息的属性* byte[] body: 消息的内容*/channel.basicConsume("work_queue",true,callback);}}
生产者
public class dao {public static void main(String[] args) throws Exception {ConnectionFactory factory = new ConnectionFactory();//设置rabbitMQ服务器的地址 默认localhostfactory.setHost("192.168.1.130");//设置rabbitMQ的端口号 默认5672factory.setPort(5672);//设置账号和密码 默认guestfactory.setUsername("guest");factory.setPassword("guest");//设置虚拟主机名 默认为 /factory.setVirtualHost("/");//获取连接通道Connection connection = factory.newConnection();//获取channel信道Channel channel = connection.createChannel();//创建队列/*** 如果该队列名不存在则自动创建,存在则不创建* String queue,队列名* boolean durable,是否持久化* boolean exclusive,(独占)声明队列同一时间只能保证一个连接,且该队列只有被这一个连接使用。* boolean autoDelete,是否自动删除* Map<String, Object> arguments: 其他参数*/channel.queueDeclare("router_queue01", true, false, false, null);channel.queueDeclare("router_queue02", true, false, false, null);//创建交换机/*String exchange,交换机的名称BuiltinExchangeType type,交换机的种类boolean durable:是否持久化*/channel.exchangeDeclare("direct_exchange", BuiltinExchangeType.DIRECT, true);//交换机和队列绑定/*String queue,队列名 String exchange,交换机名 String routingKey 路由key 如果为发布订阅模式则无需路由key*/channel.queueBind("router_queue01", "direct_exchange", "error");channel.queueBind("router_queue02", "direct_exchange", "error");channel.queueBind("router_queue02", "direct_exchange", "info");channel.queueBind("router_queue02", "direct_exchange", "warning");//发送消息到队列/*** String exchange,把消息发给哪个交换机--简单模式没有交换机""* String routingKey,消息绑定的路由key 如果为简单模式 默认写为队列名称* BasicProperties props, 消息的属性* byte[] body: 消息的内容*/String msg = "publisher msg=======2";channel.basicPublish("direct_exchange", "error", null, msg.getBytes());connection.close(); } }
消费者
public class router {public static void main(String[] args) throws Exception {ConnectionFactory factory=new ConnectionFactory();//设置rabbitMQ服务器的地址 默认localhostfactory.setHost("192.168.1.130");//设置rabbitMQ的端口号 默认5672factory.setPort(5672);//设置账号和密码 默认guestfactory.setUsername("guest");factory.setPassword("guest");//设置虚拟主机名 默认为 /factory.setVirtualHost("/");//获取连接通道Connection connection=factory.newConnection();//获取channel信道Channel channel = connection.createChannel();//监听队列/*** String queue,监听的队列名称* autoAck:是否自动确认消息* Consumer callback: 监听到消息后触发的回调函数*/DefaultConsumer callback=new DefaultConsumer(channel){//一定有消息就会触发该方法//body:表示消息的内容@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {System.out.println("接受的消息内容:"+new String(body));}};channel.basicConsume("router_queue01",true,callback);} }
public class dao {public static void main(String[] args) throws Exception {ConnectionFactory factory = new ConnectionFactory();//设置rabbitMQ服务器的地址 默认localhostfactory.setHost("192.168.1.130");//设置rabbitMQ的端口号 默认5672factory.setPort(5672);//设置账号和密码 默认guestfactory.setUsername("guest");factory.setPassword("guest");//设置虚拟主机名 默认为 /factory.setVirtualHost("/");//获取连接通道Connection connection = factory.newConnection();//获取channel信道Channel channel = connection.createChannel();//创建队列/*** 如果该队列名不存在则自动创建,存在则不创建* String queue,队列名* boolean durable,是否持久化* boolean exclusive,(独占)声明队列同一时间只能保证一个连接,且该队列只有被这一个连接使用。* boolean autoDelete,是否自动删除* Map<String, Object> arguments: 其他参数*/channel.queueDeclare("topic_queue01", true, false, false, null);channel.queueDeclare("topic_queue02", true, false, false, null);//创建交换机/*String exchange,交换机的名称BuiltinExchangeType type,交换机的种类boolean durable:是否持久化*/channel.exchangeDeclare("topic_exchange", BuiltinExchangeType.TOPIC, true);//交换机和队列绑定/*String queue,队列名 String exchange,交换机名 String routingKey 路由key 如果为发布订阅模式则无需路由key*/channel.queueBind("topic_queue01", "topic_exchange", "*.orange.*");channel.queueBind("topic_queue02", "topic_exchange", "*.*.rabbit");channel.queueBind("topic_queue02", "topic_exchange", "lazy.#");//发送消息到队列/*** String exchange,把消息发给哪个交换机--简单模式没有交换机""* String routingKey,消息绑定的路由key 如果为简单模式 默认写为队列名称* BasicProperties props, 消息的属性* byte[] body: 消息的内容*/String msg = "routers msg=======2";channel.basicPublish("topic_exchange", "lazy.orange.rabbit", null, msg.getBytes());connection.close();} }
消费者
public class topic {public static void main(String[] args) throws Exception {ConnectionFactory factory=new ConnectionFactory();//设置rabbitMQ服务器的地址 默认localhostfactory.setHost("192.168.1.130");//设置rabbitMQ的端口号 默认5672factory.setPort(5672);//设置账号和密码 默认guestfactory.setUsername("guest");factory.setPassword("guest");//设置虚拟主机名 默认为 /factory.setVirtualHost("/");//获取连接通道Connection connection=factory.newConnection();//获取channel信道Channel channel = connection.createChannel();//监听队列/*** String queue,监听的队列名称* autoAck:是否自动确认消息* Consumer callback: 监听到消息后触发的回调函数*/DefaultConsumer callback=new DefaultConsumer(channel){//一定有消息就会触发该方法//body:表示消息的内容@Overridepublic void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {System.out.println("接受的消息内容:"+new String(body));}};channel.basicConsume("topic_queue01",true,callback);} }
安装Socat安装RabbitMQ相关推荐
- linux socat rpm,RabbitMQ系列(三)RabbitMQ Server的安装(基于Linux RPM)
提示: 在Fedora和RHEL仓库中包含了RabbitMQ,但这些版本往往是滞后的且不再被支持,我们建议你使用PackageCloud或者Bintray的Yum仓库进行安装: RabbitMQ RP ...
- RabbitMQ安装---rpm安装
首先介绍一下个人的安装环境是Linux-centos7: 一.安装和配置rabbitmq的准备工作: 下载erlang: wget http://www.rabbitmq.com/release ...
- RabbitMQ安装方法 安装完成已验证方法步骤可行性
完成界面 安装erlang curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.s ...
- centos7安装docker安装rabbitmq(2021)亲测有效!!!
centos07 首先创建个虚拟机 检查是否能ping www.baidu.com docker安装 在能ping同百度的前提下 安装docker 安装docker yum install docke ...
- RabbitMq下载和安装linuxcenteros安装
Linux上安装 1安装erlang 添加yum支持 cd /usr/local/src/ mkdir rabbitmq cd rabbitmq wget http://packages.erlang ...
- centos安装rabbitmq_SpringCloud之RabbitMQ安装
本文介绍Linux以及MAC OS下的RabbitMQ安装及配置: 一.Linux环境下的RabbitMQ安装(CentOS) 1.安装ErLang Erlang(['ə:læŋ])是一种通用的面向并 ...
- Ubuntu20安装erlang和rabbitmq
版本:rabbitmq 3.8.15-1,erlang 22.1(root用户下安装,非root自行添加sudo命令) 由于版本对应和依赖的问题折腾很久,故此记录下来. 一.需要Erlang环境支持 ...
- CentOS7 安装 RabbitMQ 3.6(方法适用于安装任意版本 RabbitMQ)
安装 RabbitMQ 步骤 说明: 由于新版本的诸多不确定性,所以这里我们选择稳定的 3.6.x 版本进行安装,由于 RabbitMQ 基于 Erlang,所以我们需要先安装 Erlang,注意:切 ...
- 解决escript: exception error: undefined function rabbitmqctl_escript:main/1问题以及如何安装Erlang和RabbitMq
文章目录 1. 复现问题 2. 分析问题 3. 解决问题 4.如何安装Erlang和RabbitMq 1. 复现问题 今天在安装Erlang和RabbitMq完成后,在cmd窗口中输入如下命令: ra ...
最新文章
- 5G的3大应用场景落地开花,中国或将引领全球5G产业发展
- IC/FPGA校招笔试题分析(二)任意切换的时钟分频电路
- 文本比较算法Ⅲ——计算文本的相似度
- 权限基本操作:实体类和dao
- 辅助类KeyNode
- ms sql 触发器( 转)
- 20162317 2016-2017-2 《程序设计与数据结构》第8周学习总结
- [Hadoop]在Windows上安装Hadoop
- 详解iOS打包、发布与证书体系,深入解析证书非对称加密原理 知其所以然
- 人人开源需要的问题与解决方案(一)——公网访问、内网穿透
- 索泰显卡超频软件测试要多少时间,索泰显卡超频软件(FireStorm)
- mac电脑外接显示器后没有声音
- java线程倒计时_Java核心知识点学习----多线程 倒计时记数器CountDownLatch和数据交换的Exchanger...
- 个人理财第十课-【货币基金】筛选实操课
- Blast中文手册(1)
- Switch上gamemaker,6.11发售,可不写代码创造游戏
- Cesium专栏-空间分析之地形等高线(附源码下载)
- 【转】Linux 虚拟内存
- 主键约束、主键自增约束、唯一约束、非空约束、外键约束
- C语言·百钱百鸡问题