参考链接:
1、安装:
https://blog.csdn.net/a295277302/article/details/71246941
https://blog.csdn.net/junzhen_chen/article/details/78459383
2、使用:
https://blog.csdn.net/hzw19920329/article/details/53156015
https://blog.csdn.net/u014308482/article/details/53994401
环境信息:
OS:ubuntu16.04
前期准备:
1、ifconfig、ping命令查看网络是否正常
2、配置源(即软件下载地址)
安装(安装包方式可以参考参考链接中的1链接):
1、由于rabbitMq使用erlang语言开发,在安装rabbitMq之前需要安装erlang
sudo apt-get install erlang
2、查看erlang版本:
sudo erl
3、安装rabbitMq:
sudo apt-get install rabbitmq-server
4、要查看服务器状态
sudo rabbitmq
5、安装插件
sudo rabbitmq-plugins enable rabbitmq_manageme
安装完成后系统默认启动。
添加用户
安装完成后在rabbitMQ中添加用户
命令: sudo rabbitmqctl add_user 用户名 密码
将用户设置为管理员(只有管理员才能远程登录)
命令:sudo rabbitmqctl set_user_tags 用户名 administrator
同时为用户设置读写等权限
命令:sudo rabbitmqctl set_permissions -p / 用户名 ".*" ".*" ".*"
安装完成
使用以下链接进入插件提供的管理界面,用户名密码为上一步设置的用户名与密码(默认密码官网上找,我忘记了)
http://IP:15672
启动与停止:
启动:sudo rabbitmq-server start 关闭: sudo rabbitmq-server stop 重启: sudo rabbitmq-server restart
简单使用:
1、导入依赖
<dependencies> <!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client --> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.0.0</version> </dependency> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>1.4.6.RELEASE</version> </dependency> </dependencies>2、消息生产者
import com.rabbitmq.client.*; import java.util.HashMap; import java.util.Map; /** * 消息的生产者 * 将想要发送的消息加入消息队列 * @author ZX * 参考链接: https://blog.csdn.net/hzw19920329/article/details/53156015 https://blog.csdn.net/u014308482/article/details/53994401 */ public class Producer { public static void main(String[]args) throws Exception{ //1、创建链接对象 ConnectionFactory factory = new ConnectionFactory(); //rabbitmq所在ip,用户名密码 factory.setHost("192.168.0.17"); factory.setUsername("admin1"); factory.setPort(5672); factory.setPassword("123456"); Connection connection = factory.newConnection(); //创建一个频道 Channel channel = connection.createChannel(); //声明一个dirent模式的交换机 /**channel.exchangeDeclare(String exchange,String type,boolean durable,boolean autodelete....) 参数1:exchange 交换机对象的名称 参数2 type BuiltinExchangeType. DIRECT("direct"),定向发送消息 BuiltinExchangeType. FANOUT("fanout"),会向所有的queue广播所有收到的消息。如log系统可使用此模式 BuiltinExchangeType. TOPIC("topic"), BuiltinExchangeType. HEADERS("headers"); 参数3:durable:如果设置了true,本交换机在重启后也会生存(实际上不一定靠谱,设置为true就好) 参数n:。。。。。。。 */ channel.exchangeDeclare("exchange_name", BuiltinExchangeType.DIRECT,true); //声明一个非持久化自动删除的队列,如果该队列不在被使用就删除他 zhe channel.queueDeclare("queue_name",false,false,true,null); //将绑定到改交换机 channel.queueBind("queue_name","exchange_name","route_key"); //声明一个消息头部 AMQP.BasicProperties.Builder builder= new AMQP.BasicProperties.Builder(); Map<String,Object> header=new HashMap<String, Object>(); header.put("charset","utf-8"); builder.headers(header); AMQP.BasicProperties basicProperties=builder.build(); //将消息发出去 channel.basicPublish("exchange_name","route_key",false,basicProperties,"消息的内容".getBytes()); for (int i=0;i<100;i++){ channel.basicPublish("exchange_name","route_key",false,basicProperties,("消息的内容"+i).getBytes()); } } }
3、消息消费者:
import com.rabbitmq.client.*; import com.rabbitmq.client.BuiltinExchangeType; import java.io.IOException; public class Consumer { public static void main(String[]args) throws Exception{ //1、创建链接对象 ConnectionFactory factory = new ConnectionFactory(); factory.setHost("192.168.0.17"); factory.setUsername("admin1"); factory.setPort(5672); factory.setPassword("123456"); Connection connection = factory.newConnection(); Channel channel = connection.createChannel(); //声明一个dirent模式的交换机 /**channel.exchangeDeclare(String exchange,String type,boolean durable,boolean autodelete....) 参数1:exchange 交换机对象的名称 参数2 type BuiltinExchangeType. DIRECT("direct"), BuiltinExchangeType. FANOUT("fanout"), BuiltinExchangeType. TOPIC("topic"), BuiltinExchangeType. HEADERS("headers"); 参数3:durable:如果设置了true,本交换机在重启后也会生存(实际上不一定靠谱,设置为true就好) 参数n:。。。。。。。 */ channel.exchangeDeclare("exchange_name",BuiltinExchangeType.DIRECT,true); //声明一个非持久化自动删除的队列,如果该队列不在被使用就删除他 channel.queueDeclare("queue_name",false,false,true,null); //将绑定到改交换机 channel.queueBind("queue_name","exchange_name","route_key"); //创建消费者对象 com.rabbitmq.client.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(" [x] Received '" + message + "'"); } }; channel.basicConsume("queue_name", true, consumer); } }