美文网首页
RabbitMQ-简单队列

RabbitMQ-简单队列

作者: jiahzhon | 来源:发表于2020-07-20 16:03 被阅读0次

简单队列

  • 添加依赖
  <dependency>
    <groupId>com.rabbitmq</groupId>
    <artifactId>amqp-client</artifactId>
    <version>3.4.1</version>
  </dependency>
image.png

P:消息的生产者-->队列-->消费者

  • 连接rabbitmq
  public static Connection getConnections() throws IOException{
      //定义一个连接工厂
      ConnectionFactory factory=new ConnectionFactory();
      //设置服务器ַ
      factory.setHost("127.0.0.1");
      //      AMQP  5672
      factory.setPort(5672);
      //vhost
      factory.setVirtualHost("/vhost_mmr");
      //用户名
      factory.setUsername("huyanglin");
      //密码
      factory.setPassword("huyanglin");
      Connection newConnection = factory.newConnection();
      return newConnection;
  }
  • 发送消息
  public static void main(String[] args) throws IOException {
    //1.获取链接
      Connection connections = ConnectionUtils.getConnections();
    //2.创建通道
      Channel channel = connections.createChannel();
      channel.queueDeclare(QUEUE_NAME, false, false, false, null);
      String msg="hello simple";
      channel.basicPublish("", QUEUE_NAME, null, msg.getBytes());
      System.out.println(msg);
      channel.close();
      connections.close();
}

  • 监听(接收消息)
private static final String QUEUE_NAME="test_simple_queue";
public static void main(String[] args) throws IOException {
        //建立链接、创建通道
        Connection connections = ConnectionUtils.getConnections();
        Channel channel = connections.createChannel();
        //队列声明
        channel.queueDeclare(QUEUE_NAME, false, false, false, null) ;
        //定义消费者
        DefaultConsumer defaultConsumer = new DefaultConsumer(channel){
            //获取到达的消息
            @Override
            public void handleDelivery(String consumerTag, Envelope envelope, BasicProperties properties, byte[] body)
                    throws IOException {
                String msg=new String(body,"utf-8");
                System.out.println("取数据"+msg);
            };
        };
        //消费队列
    channel.basicConsume(QUEUE_NAME, true, defaultConsumer);
}
  • 简单队列的不足
    • 耦合性高,生产者一一对应消费者(不能满足多个消费者消费队列中的消息)。
    • 队列名变更,得同时变更。

相关文章

  • RabbitMQ-简单队列

    简单队列 添加依赖 P:消息的生产者-->队列-->消费者 连接rabbitmq 发送消息 监听(接收消息) 简单...

  • RabbitMQ-消费消息-basicConsume

    RabbitMQ-消费消息 basicConsume方法 queue 队列名 autoAck 是否自动确认消息,t...

  • SpringBoot整合RabbitMQ1(Direct Exc

    一. 一些基本概念 消息队列 面试官问你什么是消息队列?把这篇甩给他! RabbitMQ RabbitMQ-简书柯...

  • SpringBoot整合RabbitMQ1(Topic Exch

    一. 一些基本概念 消息队列 面试官问你什么是消息队列?把这篇甩给他! RabbitMQ RabbitMQ-简书柯...

  • rabbitMQ-延时队列

    延时队列我们可以简单粗暴的理解它为延时发送消息的队列 那延时队列的应用场景有哪些呢,比如订单在一段时间内未支付则取...

  • rabbitmq-死信队列

    因为可能用到死信队列,所以自己写了一个demo.不知道会不会用到呢... 刚开始认为死信队列是将超时/失败的消息放...

  • RabbitMQ-消息队列

    四种交换器 Virtual hosts 架构模型 RabbitMQ Server: 也叫broker server...

  • RabbitMQ-工作队列

    work queues 工作队列 轮询分发 为什么会出现工作队列simple队列 是一一对应的,实际开发中,...

  • RabbitMQ入门-消息派发那些事儿

    在上篇《RabbitMQ-高效的Work模式》中,我们了解了Work模型,该模型包括一个生产者,一个消息队列和多个...

  • RabbitMQ-理解消息通信-队列

    AMQP消息路由必须有三部分:交换器、队列和绑定 欢迎访问本人博客:http://wangnan.tech 队列 ...

网友评论

      本文标题:RabbitMQ-简单队列

      本文链接:https://www.haomeiwen.com/subject/xuhykktx.html