• RabbitMQ快速入门--simple简单模式


    一.maven导入依赖

    1. <!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client -->
    2. <dependency>
    3. <groupId>com.rabbitmq</groupId>
    4. <artifactId>amqp-client</artifactId>
    5. <version>4.10.0</version>
    6. </dependency>
    7. <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-log4j12 -->
    8. <dependency>
    9. <groupId>org.slf4j</groupId>
    10. <artifactId>slf4j-log4j12</artifactId>
    11. <version>1.7.25</version>
    12. <scope>test</scope>
    13. </dependency>
    14. <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
    15. <dependency>
    16. <groupId>org.apache.commons</groupId>
    17. <artifactId>commons-lang3</artifactId>
    18. <version>3.9</version>
    19. </dependency>

     二.创建消费者与生产者

    如图简单的--simple简单模式是一个生产一个消费这样形成一个简单的消息队列的入门

    1. 消息产生着&&将消息放入队列
    2. 消息的消费者(consumer) 监听(while) 消息队列,如果队列中有消息,就消费掉,消息被拿走后,自动从队列中删除(隐患 消息可能没有被消费者正确处理,已经从队列中消失了,造成消息的丢失)应用场景:聊天(中间有一个过度的服务器;p端,c端)


     三.编写生产者代码

    这里个人感觉和原生的jdbc很像,先创建连接信息再去进行操作

    1. package com.lanlan.Simple;
    2. import com.rabbitmq.client.Channel;
    3. import com.rabbitmq.client.Connection;
    4. import com.rabbitmq.client.ConnectionFactory;
    5. import java.io.IOException;
    6. import java.util.concurrent.TimeoutException;
    7. public class sheng {
    8. //所有中间键技术都是基于tcp/ip协议之上来构建,只不过rabbitma是遵循ampq协议
    9. public static void main(String[] args) throws IOException, TimeoutException {
    10. //1:创建连接工程
    11. ConnectionFactory connectionFactory = new ConnectionFactory();
    12. connectionFactory.setHost("101.35.114.23"); //填写你的ip
    13. connectionFactory.setPort(5672); //mq 默认端口
    14. connectionFactory.setUsername("guest"); //mq 管理员账号
    15. connectionFactory.setPassword("guest"); //mq 管理员密码
    16. connectionFactory.setVirtualHost("/");
    17. //为下面提供对象
    18. Connection connection = null;
    19. Channel channel = null;
    20. try{
    21. //2:创建连接connnction
    22. connection = connectionFactory.newConnection("客户端看见的消息");
    23. //3:通过连接获取通道
    24. channel = connection.createChannel();
    25. //4:通过创建交换机,声明队列。绑定关系。路由key,发送消息,和接收消息
    26. String queueName = "queue1";
    27. /*
    28. 参数1:队列名称
    29. 参数2:是否持久化,
    30. 参数3:排他性,是否独占独立
    31. 参数4:是否自动删除,一般不自动删除
    32. 参数5:携带参数,后面有用到
    33. * */
    34. channel.queueDeclare(queueName,false,false,false,null);
    35. //5:准备消息内容
    36. String message ="蓝蓝的代码人!!!!";
    37. //6:发送出去给队列
    38. channel.basicPublish("",queueName,null,message.getBytes());
    39. System.err.println("发送消息成功");
    40. } catch (IOException | TimeoutException e) {
    41. e.printStackTrace();
    42. } finally {
    43. //7:关闭通道
    44. if (channel!=null&& channel.isOpen()){
    45. channel.close();
    46. }
    47. //8:关闭连接
    48. if (connection !=null && connection.isOpen()){
    49. connection.close();
    50. }
    51. }
    52. }
    53. }


     这里感兴趣的可以打一个断点去看一下。


      四.编写消费者代码

     现在我们的生产者已经将信息发到了消息队列,我们应该编写一个消费找一条信息。

    1. package lanlan.Simple;
    2. import com.rabbitmq.client.*;
    3. import java.io.IOException;
    4. public class xiao {
    5. //所有中间键技术都是基于tcp/ip协议之上来构建,只不过rabbitma是遵循ampq协议
    6. public static void main(String[] args) throws Exception {
    7. //1:创建连接工程
    8. ConnectionFactory connectionFactory = new ConnectionFactory();
    9. connectionFactory.setHost("101.35.114.64");
    10. connectionFactory.setPort(5672);
    11. connectionFactory.setUsername("guest");
    12. connectionFactory.setPassword("guest");
    13. connectionFactory.setVirtualHost("/");
    14. //为下面提供对象
    15. Connection connection = null;
    16. Channel channel = null;
    17. try{
    18. //2:创建连接connnction
    19. connection = connectionFactory.newConnection("客户端看见的消息");
    20. //3:通过连接获取通道xs
    21. channel = connection.createChannel();
    22. channel.queueDeclare("queue1", false, false, false, null);
    23. DeliverCallback deliverCallback = (consumerTag, delivery) -> {
    24. String message = new String(delivery.getBody(), "UTF-8");
    25. System.out.println("消费的消息是" + message + "'");
    26. };
    27. channel.basicConsume("queue1", true, deliverCallback, consumerTag -> { });
    28. } catch (Exception e) {
    29. e.printStackTrace();
    30. } finally {
    31. //7:关闭通道
    32. if (channel!=null&& channel.isOpen()){
    33. channel.close();
    34. }
    35. //8:关闭连接
    36. if (connection !=null && connection.isOpen()){
    37. connection.close();
    38. }
    39. }
    40. }
    41. }

     写好代码然后去消费他

     

      


     

    这样简单的入门就完成了

     

     

     

      

  • 相关阅读:
    Nuxt3使用初体验
    从零开始搭建仿抖音短视频APP-后端开发评论业务模块(2)
    总结了几个做用户体验设计的原则,分享给需要的朋友
    嵌入Circle映射和逐维小孔成像反向学习的鲸鱼优化算法-附代码
    安全狗云原生安全能力守护中国联通安全发展
    编译安装Linux内核
    ubuntu无法使用man
    国庆day4
    第四章 数据库安全性
    Linux驱动开发一
  • 原文地址:https://blog.csdn.net/weixin_65451442/article/details/125485173