前言

这里使用手动管理jar与使用Maven管理jar两种方式,分别演示消息的发送和接收。

手动管理jar实现消息发送与接收

  1. 添加jar

    amqp-client-5.7.1.jar

    slf4j-api-1.7.26.jar

    slf4j-simple-1.7.26.jar
  2. 编写发布者Publisher
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory; import java.nio.charset.StandardCharsets; public class Publisher { private final static String QUEUE_NAME = "queue_hello"; public static void main(String[] argv) throws Exception {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setPort(5672);
factory.setUsername("guest");
factory.setPassword("guest"); try (Connection connection = factory.newConnection();
Channel channel = connection.createChannel()) {
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello World!";
// 使用默认交换机
channel.basicPublish("", QUEUE_NAME, null, message.getBytes(StandardCharsets.UTF_8));
System.out.println(" [x] Sent '" + message + "'");
}
}
}
  1. 编写接收者

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DeliverCallback; public class Receiver { private final static String QUEUE_NAME = "queue_hello"; public static void main(String[] args) throws Exception {
ConnectionFactory connectionFactory = new ConnectionFactory();
connectionFactory.setHost("localhost");
connectionFactory.setPort(5672);
connectionFactory.setUsername("guest");
connectionFactory.setPassword("guest"); Connection connection = connectionFactory.newConnection();
Channel channel = connection.createChannel(); channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println(" [*] Waiting for messages. To exit press CTRL+C"); DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), "UTF-8");
System.out.println(" [x] Received '" + message + "'");
};
channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> { });
} }

使用Maven管理jar实现发送与接收

  1. 添加常用Maven依赖
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties> <build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
  1. 添加MQ相关依赖
<dependencies>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>5.1.2</version>
</dependency>
</dependencies>
  1. 消息发送代码

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory; import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.concurrent.TimeoutException; public class Publisher { private final static String QUEUE_NAME = "queue_hello"; public static void main(String[] args) throws IOException, TimeoutException { ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setPort(5672);
factory.setUsername("guest");
factory.setPassword("guest"); try (Connection connection = factory.newConnection();
Channel channel = connection.createChannel()) {
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
String message = "Hello World";
channel.basicPublish("", QUEUE_NAME, null, message.getBytes(StandardCharsets.UTF_8));
System.out.println(" [x] Sent '" + message + "'");
}
} }
  1. 消息接收代码
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.DeliverCallback; import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.Queue;
import java.util.concurrent.TimeoutException; public class Receiver { private final static String QUEUE_NAME = "queue_hello"; public static void main(String[] args) throws IOException, TimeoutException {
ConnectionFactory factory = new ConnectionFactory();
factory.setHost("localhost");
factory.setPort(5672);
factory.setUsername("guest");
factory.setPassword("guest"); Connection connection = factory.newConnection();
Channel channel = connection.createChannel();
channel.queueDeclare(QUEUE_NAME, false, false, false, null);
System.out.println("正在等待消息..."); DeliverCallback deliverCallback = (consumerTag, delivery) -> {
String message = new String(delivery.getBody(), StandardCharsets.UTF_8);
System.out.println("接收到消息:" + message);
}; channel.basicConsume(QUEUE_NAME, true, deliverCallback, consumerTag -> {});
}
}

演示结果

参考文档

官方文档: https://www.rabbitmq.com/tutorials/tutorial-one-java.html

最新文章

  1. JavaScript倒计时
  2. 使用shell定时自动备份mysql数据库
  3. hdu2222 Keywords Search ac自动机
  4. 从零开始设计SOA框架(二):请求/响应参数的设计
  5. IOS CoreData 多表查询demo解析
  6. Arduino中的数据类型范围
  7. *IntelliJ IDEA使用Hibernate连接数据库
  8. vijos p1071新年趣事之打牌
  9. Java IO详解(转)
  10. 代码段编辑器SnippetEditor 2.1
  11. Ubuntu安装samba服务器
  12. uva 10163 - Storage Keepers(01背包)
  13. CLR之委托的揭秘(二)
  14. 使用commons-csv简单读写CSV文件
  15. linux cenots7安装mysql
  16. 原生JS操作object HTMLTableSectionElement 对象,获取行数
  17. nginx指定文件路径有两种方式root和alias
  18. Modbus库开发笔记之十:利用协议栈开发Mosbus RTU Slave应用
  19. poj3087 Shuffle&#39;m Up(模拟)
  20. 120分钟React快速扫盲教程

热门文章

  1. 代码小DEMO随笔---不经过后端接口,JS上传文件读取文件,展示到页面提供下载功能
  2. java 入门与进阶P-6.3+P-6.4
  3. Unity_UIWidgets - 组件Container
  4. C#零基础小白快速入门
  5. 【单片机】通过定时器实现模拟任意路PWM通道(带实例和计算方法)
  6. 容器镜像仓库-Harbor的安装及踩坑
  7. ChatGPT:好家伙,每个人内心的一块魔镜
  8. LeetCode_单周赛_327
  9. python requests 最牛攻略
  10. kubernetes之Ingress发布Dashboard(二)