栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

RabbitMQ(一)废话连篇

RabbitMQ(一)废话连篇

程序员的玩具:兔子没钱。——暮雪绵豆沙

作用
  1. 流量削峰。保护服务
  2. 逻辑解耦。中间件
  3. 优雅异步。
常用MQ
  • ActiveMQ:老牌。
  • Kafka:为大数据而生。
  • RocketMQ:双十一的考验。
  • RabbitMQ:简单,开发语言冷门。
核心概念
  • 生产者:产生消息
  • 交换机:路由分发
  • 队列:消息队列
  • 消费者:消费消息
  • 通道:管理连接

工作模式

  • 简单模式
  • 分配工作任务
  • 发布订阅
  • 路由
  • 主题
  • RPC
  • 发布确认
软件安装 安装erlang

官网下载

配置环境变量

ERLANG_HOME
指向根目录,比如说:E:programserl-24.2

下载

官网下载

配置

切换到sbin目录
启用Web插件

./rabbitmq-plugins.bat enable rabbitmq_management

打开后台服务,建议设成bat脚本

./rabbitmq-server.bat -detached

网页地址
http://localhost:15672/#/
初始账户
guest / guest

入门案例

pom.xml


	
		com.rabbitmq
		amqp-client
		5.14.0
	
	
		commons-io
		commons-io
		2.6
	

工具类

用于获取通道

public class RabbitUtil {
	public static Channel getConn() throws Exception {
		ConnectionFactory cf = new ConnectionFactory();
		cf.setHost("localhost");
		cf.setUsername("guest");
		cf.setPassword("guest");
		return cf.newConnection().createChannel();
	}
}
生产者

发送10条简单消息

public class Producer {

	public static void main(String[] args) throws Exception {
		//获取连接
		Channel channel = RabbitUtil.getConn();
		
		channel.queueDeclare("q", false, false, false, null);

		for (int i = 1; i <= 10; i++) {
			
			channel.basicPublish("", "q", null, (i + "").getBytes());
		}
		//关闭连接
		channel.getConnection().close();
	}
}

运行


成功!

消费者

用于消费消息

public class Consumer {

	public static void main(String[] args) throws Exception {
		//获取连接
		Channel channel = RabbitUtil.getConn();
		//声明回调
		DeliverCallback deliver = (consumerTag, message) -> {
			System.out.println("接收了" + new String(message.getBody()));
		};
		//取消回调
		CancelCallback cancel = consumerTag -> {
			System.out.println("取消了");
		};
		
		channel.basicConsume("q", true, deliver, cancel);
	}
}

运行


成功!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/695704.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号