RabbitMQ实例教程:Hello RabbitMQ World之Java实现

简介:

 RabbitMQ要实现Hello World,其实也很简单。只需一个服务器来发送消息,另外有个客户端接收消息即可。


  整体的设计流程如下:

spacer.gif

wKiom1YWYgHB-hQJAAAu_VEL4ZU275.jpg


  消息生产者发送Hello到消息队列,消息消费者从队列中接收消息。


  下载依赖Jar包


  RabbitMQ要用Java实现发送消息,就必须使用Java客户端库。目前RabbizMQ的Java客户端库最新版为为 3.5.5 。可以从Maven仓库下载,也可以直接去官网下载。

1
2
3
4
5
<dependency>
    <groupId>com.rabbitmq< /groupId >
    <artifactId>amqp-client< /artifactId >
    <version>3.5.5< /version >
< /dependency >


  使用Java创建发送者


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package  com.favccxx.favrabbit;
 
import  java.io.IOException;
import  java.util.concurrent.TimeoutException;
 
import  com.rabbitmq.client.Channel;
import  com.rabbitmq.client.Connection;
import  com.rabbitmq.client.ConnectionFactory;
 
public  class  Sender {
 
     private  final  static  String QUEUE_NAME =  "hello" ;
 
     public  static  void  main(String[] argv)  throws  IOException, TimeoutException {
         ConnectionFactory factory =  new  ConnectionFactory();
         factory.setHost( "localhost" );
 
         Connection connection = factory.newConnection();
         Channel channel = connection.createChannel();
         channel.queueDeclare(QUEUE_NAME,  false ,  false ,  false ,  null );
         String message =  "Hello RabbitMQ World!" ;
         channel.basicPublish( "" , QUEUE_NAME,  null , message.getBytes());
         System.out.println( " [x] Sent '"  + message +  "'" );
 
     }
}


  RabbitMQ控制台监控消息队列


  运行上面的代码,从RabbitMQ控制台就可以看到刚刚发送的消息。


wKioL1YWYi2yZBRwAAEPraskuSo107.jpg


wKiom1YWYiWjcDCkAAFPUsXNPAk625.jpg


  使用Java接收消息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package  com.favccxx.favrabbit;
 
import  java.io.IOException;
import  java.util.concurrent.TimeoutException;
 
import  com.rabbitmq.client.AMQP;
import  com.rabbitmq.client.Channel;
import  com.rabbitmq.client.Connection;
import  com.rabbitmq.client.ConnectionFactory;
import  com.rabbitmq.client.Consumer;
import  com.rabbitmq.client.DefaultConsumer;
import  com.rabbitmq.client.Envelope;
 
public  class  Receiver {
 
     private  final  static  String QUEUE_NAME =  "hello" ;
 
     public  static  void  main(String[] argv)
             throws  java.io.IOException, java.lang.InterruptedException, TimeoutException {
 
         ConnectionFactory factory =  new  ConnectionFactory();
         factory.setHost( "localhost" );
         Connection connection = factory.newConnection();
         Channel channel = connection.createChannel();
 
         channel.queueDeclare(QUEUE_NAME,  false ,  false ,  false ,  null );
         System.out.println( " [*] Waiting for messages. To exit press CTRL+C" );
 
         Consumer consumer =  new  DefaultConsumer(channel) {
             @Override
             public  void  handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties,
                     byte [] body)  throws  IOException {
                 String message =  new  String(body,  "UTF-8" );
                 System.out.println( " [x] Received '"  + message +  "'" );
             }
         };
         channel.basicConsume(QUEUE_NAME,  true , consumer);
     }
}


  分别运行消息发送者和消息接收者,从RabbitMQ控制台可以看到实时的状况。

wKioL1YWY_Cz1LVDAAIKIpPqV5w568.jpg

  


  到此为止,RabbitMQ的Hello World工作就结束了,是不是对消息队列有了一些好感了呢?






本文转自 genuinecx 51CTO博客,原文链接:http://blog.51cto.com/favccxx/1701004,如需转载请自行联系原作者
相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
消息中间件 监控 Docker
Docker环境下快速部署RabbitMQ教程。
就这样,你成功地用魔法召唤出了RabbitMQ,还把它和你的应用程序连接了起来。现在,消息会像小溪流水一样,在你的系统中自由流淌。别忘了,兔子们不喜欢孤独,他们需要你细心的关怀,不时地监控它们,确保他们的世界运转得井井有条。
849 18
|
存储 消息中间件 安全
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
【10月更文挑战第9天】本文介绍了如何利用JUC组件实现Java服务与硬件通过MQTT的同步通信(RRPC)。通过模拟MQTT通信流程,使用`LinkedBlockingQueue`作为消息队列,详细讲解了消息发送、接收及响应的同步处理机制,包括任务超时处理和内存泄漏的预防措施。文中还提供了具体的类设计和方法实现,帮助理解同步通信的内部工作原理。
JUC组件实战:实现RRPC(Java与硬件通过MQTT的同步通信)
|
消息中间件 存储 JSON
rabbitmq基础教程(ui,java,springamqp)
本文提供了RabbitMQ的基础教程,包括如何使用UI创建队列和交换机、Java代码操作RabbitMQ、Spring AMQP进行消息发送和接收,以及如何使用不同的交换机类型(fanout、direct、topic)进行消息路由。
352 0
rabbitmq基础教程(ui,java,springamqp)
|
消息中间件 存储 Java
RocketMQ文件刷盘机制深度解析与Java模拟实现
【11月更文挑战第22天】在现代分布式系统中,消息队列(Message Queue, MQ)作为一种重要的中间件,扮演着连接不同服务、实现异步通信和消息解耦的关键角色。Apache RocketMQ作为一款高性能的分布式消息中间件,广泛应用于实时数据流处理、日志流处理等场景。为了保证消息的可靠性,RocketMQ引入了一种称为“刷盘”的机制,将消息从内存写入到磁盘中,确保消息持久化。本文将从底层原理、业务场景、概念、功能点等方面深入解析RocketMQ的文件刷盘机制,并使用Java模拟实现类似的功能。
569 3
|
Java
MQTT(EMQX) - Java 调用 MQTT Demo 代码
MQTT(EMQX) - Java 调用 MQTT Demo 代码
648 0
MQTT(EMQX) - Java 调用 MQTT Demo 代码
|
网络协议 物联网 测试技术
App Inventor 2 MQTT拓展入门(保姆级教程)
本文演示的是App和一个测试客户端进行消息交互的案例,实际应用中,我们的测试客户端可以看着是任意的、支持MQTT协议的硬件,通过订阅及发布消息,联网硬件与我们的App进行双向数据通信,以实现万物互联的智能控制效果。
1743 2
|
消息中间件 前端开发 Java
java高并发场景RabbitMQ的使用
java高并发场景RabbitMQ的使用
600 0
|
消息中间件 Java Maven
如何在Java中使用RabbitMQ
如何在Java中使用RabbitMQ
1236 2
|
消息中间件 缓存 Java
RocketMQ的JAVA落地实战
RocketMQ作为一款高性能、高可靠、高实时、分布式特点的消息中间件,其核心作用主要体现在异步处理、削峰填谷以及系统解耦三个方面。
817 0