大数据学习
bigdata learning
Toggle navigation
大数据学习
主页
openGauss数据库
Flume
MongoDB
Hadoop
数据库实验
Kafka
Zookeeper
Hbase
Manual
Spark
Neo4j
InfluxDB
RabbitMQ
Flink
About Me
归档
标签
4 direct模式
无
2023-06-21 20:17:43
10
0
0
bigdata
## direct模式 producer 只需要往 direct交换机中发消费,producer 向routing key中发消息 routing key 和 队列是 多对一 关系,一个队列可以有多个routing key consumer 只从队列如“**direct_queue1**”中取数据, ###新建maven项目mqtest   ###pom中导入rabbitmq相关依赖 ``` <dependencies> <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp-client</artifactId> <version>5.16.0</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.11.0</version> </dependency> </dependencies> ``` ###App.java ``` package com.mqtest; import com.rabbitmq.client.*; import com.rabbitmq.client.Connection; import com.rabbitmq.client.Channel; import com.rabbitmq.client.ConnectionFactory; import java.io.IOException; import java.util.concurrent.TimeoutException; public class App { //指定交换机、队列以及routing key名字 private static final String EXCHANGE_NAME = "direct_exchange"; private static final String QUEUE_NAME = "direct_queue"; private static final String ROUTING_KEY = "direct_routing_key"; public static void main( String[] args ) { //配置并连接rabbitmq ConnectionFactory factory = new ConnectionFactory(); factory.setHost("localhost"); factory.setPort(5672); factory.setUsername("guest"); factory.setPassword("guest"); //创建rabbitmq连接对象以及channel对象 try (Connection connection = factory.newConnection(); Channel channel = connection.createChannel()) { // 声明直连交换机和队列,并绑定它们 channel.exchangeDeclare(EXCHANGE_NAME, BuiltinExchangeType.DIRECT, true); channel.queueDeclare(QUEUE_NAME, true, false, false, null); channel.queueBind(QUEUE_NAME, EXCHANGE_NAME, ROUTING_KEY); // 发布消息 String message = "Hello, RabbitMQ!"; channel.basicPublish(EXCHANGE_NAME, ROUTING_KEY, null, message.getBytes("UTF-8")); System.out.println("Sent message: " + message); // 消费消息 channel.basicConsume(QUEUE_NAME, true, (consumerTag, delivery) -> { String mesage = new String(delivery.getBody(), "UTF-8"); System.out.println("Received message: " + mesage); }, consumerTag -> {}); } catch (IOException | TimeoutException e) { e.printStackTrace(); } } } ``` ##运行结果  ##ecs测试jar包 ###Ubuntu安装rabbitmq服务 ``` 更新软件包列表: sudo apt update 安装 RabbitMQ: sudo apt install rabbitmq-server 启动 RabbitMQ 服务: sudo systemctl start rabbitmq-server 验证 RabbitMQ 服务是否正在运行: sudo systemctl status rabbitmq-server //如果看到 "active (running)" 或类似的消息,表示 RabbitMQ 服务已成功启动。 设置 RabbitMQ 服务开机启动: sudo systemctl enable rabbitmq-server ```  ###方式1 ###上传jar包到ecs然后运行jar包 >java -cp mqtest-1.0-SNAPSHOT.jar com.mqtest.App  方式2 ###上传源文件到ecs然后maven打包并运行  
上一篇:
3 扇出模式
下一篇:
5 topic模式
文档导航