RabbitMQ个人快速总结
简介:
1.RabbitMQ:是一个消息中间件同样的产品还有kafka,activeMQ等,它是实现了AMQP应用层协议的框架,它是用ErLang写的,用于系统与系统之间的通信,应用场景有[实现商品数据的同步].
2.RabbitMQ:支持多种语言开发java,python,c,c++,.net,node.js等.
支持多种环境linux,windows,MacOX.
搭建RabbitMQ环境
windows下的环境搭建:
- 安装ErLang的环境;[相当于Java开发安装的jdk];-------------------->[一路下一步]
注意:{这里建议安装位置在C盘下,其他盘下有可能停不了}[推荐使用默认的路径. 系统的用户名必须为英文. 计算机名必须是英文] {如果出现错误,请点击忽略按钮} - 安装RabbitMQ;双击打开,必选两项RabbitMQ Service,Start Menu.—
–>next{ 选择默认的路径C盘}–>install—>finsh完成
注意:找到MQ的黑窗口输入:rabbitmq-plugins enable rabbitmq_management上网页输入127.0.0.1:15672输入账号密码guest/guest登陆,成功登陆,就表示安装成功.
一.[简单队列模式]生产者消费者代码
send生产者[代码]`.
// 生产者存入MQ的类
public class Send {
//声明消息队列名称
private final static String QUEUE_NAME="test_name";
//方法
public static void main(String[] args)throws Exception{
//获取MQ连接
Connection connection=ConnectionUtil.getConnection();
//创建channal通道
Channel channel=connection.createChannel();
//声明队列
channel.queueDeclare(QUEUE_NAME,false,false,false,null);
//消息内容
String message="wyd";
channel.basicPublish("",QUEUE_NAME,null,message.getBytes());
System.out.println("生产者:" + message);
//关闭通道和连接
channel.close();
connection.close();
}
}
Recv消费者[代码]`.
//消费者消费的类
public class Recv {
//声明消息队列名称
private final static String QUEUE_NAME="test_name";
//方法
public static void main(String[] args)throws Exception{
//获取MQ连接
Connection connection=ConnectionUtil.getConnection();
//创建channal通道
Channel channel=connection.createChannel();
//声明队列
channel.queueDeclare(QUEUE_NAME,false,false,false,null);
//定义队列的消费者
QueueingConsumer consumer=new QueueingConsumer(channel);
//监听队列
channel.basicConsume(QUEUE_NAME,true,consumer);
//获取消息
while(true){
QueueingConsumer.Delivery delivery=consumer.nextDelivery();
String message=new String(delivery.getBody);
System.out.println("消费者:"+message);
}
}
}
二.[Work模式一]生产者消费者代码
send生产者[代码]`.
// 生产者存入MQ的类
public class Send {
//声明消息队列名称
private final static String QUEUE_NAME="test_queue_work";
//方法
public static void main(String[] args)throws Exception{
//获取MQ连接,channal通道
Connection connection=ConnectionUtil.getConnection();
Channel channel=connection.createChannel();
//声明队列
channel.queueDeclare(QUEUE_NAME,false,false,false,null);
for(int i=0;i<100;i++){
//消息内容
String message=""+i;
channel.basicPublish("",QUEUE_NAME,null,message.getBytes());
System.out.println("生产者:"+message);
Thread.sleep(i * 10);
}
//关闭通道,连接
channel.close();
connection.close();
Recv1消费者[代码]`
//消费者消费的类
public class Recv1 {
//声明消息队列名称
private final static String QUEUE_NAME="test_queue_work";
//方法
public static void main(String[] args)throws Exception{
//获取MQ连接,channal通道
Connection connection=ConnectionUtil.getConnection();
Channel channel=connection.createChannel();
//声明队列
channel.queueDeclare(QUEUE_NAME,false,false,false