是基于amqp协议开发的一款消息队列产品
根据ip地址加端口号15672登录到rabbitmq,默认账号密码是guest
建好用户之后,可以创建一个虚拟机
创建好虚拟机之后,将虚拟机加到用户里。点击虚拟机,设置虚拟机的用户
下面是一个hello_world的demo
生产者
package com.dt.producer;
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 Pro_HelloWorld {
public static void main(String[] args)throws IOException,TimeoutException {
//1.创建连接工厂
ConnectionFactory factory =new ConnectionFactory();
//2.设置参数
factory.setHost("192.168.198.131");
factory.setPort(5672);
factory.setVirtualHost("/dante");
factory.setUsername("dante");
factory.setPassword("dante");
//3.创建连接
Connection connection =factory.newConnection();
//4.创建管道
Channel channel =connection.createChannel();
//5.创建队列
/*
String queue, boolean durable, boolean exclusive, boolean autoDelete, Map arguments
queue:队列名 durable:是否持久化。重启mq后,是不是还在 exclusive:1是否独占2关闭连接后是否删除 autoDelete:在没有消费者时:是否自动删除 arguments:参数 目前填null
*/
channel.queueDeclare("hello_world",true,false,false,null);
//6.发送消息
String body ="hello rabbitmq";
/*
String exchange, String routingKey, BasicProperties props, byte[] body
exchange:交换机名称 简单模式下默认填“”
routingKey:路由名称 props:配置参数 body:消息*/
channel.basicPublish("","hello_world",null,body.getBytes());
//释放资源
channel.close();
connection.close();
}
}
消费者
package com.dt.customer;
import com.rabbitmq.client.*;
import java.io.IOException;
import java.util.concurrent.TimeoutException;
public class Customer_HelloWorld {
public static void main(String[] args)throws IOException,TimeoutException {
//1.创建连接工厂
ConnectionFactory factory =new ConnectionFactory();
//2.设置参数
factory.setHost("192.168.198.131");
factory.setPort(5672);
factory.setVirtualHost("/dante");
factory.setUsername("dante");
factory.setPassword("dante");
//3.创建连接
Connection connection =factory.newConnection();
//4.创建管道
Channel channel =connection.createChannel();
//5.创建队列
/*
String queue, boolean durable, boolean exclusive, boolean autoDelete, Map arguments
queue:队列名 durable:是否持久化。重启mq后,是不是还在 exclusive:1是否独占2关闭连接后是否删除 autoDelete:在没有消费者时:是否自动删除 arguments:参数 目前填null
*/
channel.queueDeclare("hello_world",true,false,false,null);
Consumer consumer =new DefaultConsumer(channel) {
/*
consumerTag:标识 envelope:获取对应信息 交换机 路由信息...
properties:配置信息 body:数据信息*/
@Override
public void handleDelivery(String consumerTag,Envelope envelope,AMQP.BasicProperties properties,byte[] body)throws IOException {
System.out.println(consumerTag+"-"+envelope.getExchange()+"-"+properties+"-"+new String(body));
}
};
channel.basicConsume("hello_world",true,consumer);
}
}
依赖的包