当前位置:美高梅游戏 > 高考工厂模拟器 > 【高考工厂模拟器】需要了解RabbitMQ的工作原理

【高考工厂模拟器】需要了解RabbitMQ的工作原理

文章作者:高考工厂模拟器 上传时间:2019-11-13

【高考工厂模拟器】需要了解RabbitMQ的工作原理。【高考工厂模拟器】需要了解RabbitMQ的工作原理。RabbitMQ 新闻坐蓐者的代码完结

import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.Channel;
public class RabbitProducer {
    private final static String QUEUE_NAME = "RabbitMQ_Hello"; //消息队列名

      public static void main(String[] argv) throws Exception {
         //创建连接连接到RabbitMQ 
        ConnectionFactory factory = new ConnectionFactory();
        // 设置ip
        factory.setHost("127.0.0.1");
        /*   //设置端口
        factory.setPort(15672);
        //设置用户名
        factory.setUsername("guest");
        //设置密码
        factory.setPassword("guest");
       //设置url(包括ip、端口、用户名、密码)
        factory.setUri("amqp://guest:guest@localhost:15672");
      */    
        // 创建一个连接  
        Connection connection = factory.newConnection();
        // 创建一个频道 
        Channel channel = connection.createChannel();
        // 指定一个队列  
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        Map<String,Object> map=new HashMap<String,Object>();  
          map.put("java", "hello");
          map.put("RabbitMQ", "Hello");
        //发送的消息
        String message = JSON.toJSONString(map); 
        // 往队列中发出一条消息 
        channel.basicPublish("", QUEUE_NAME, null, message.getBytes()); 
        System.out.println(" [x] Sent '" + message + "'");
        // 关闭频道和连接  
        channel.close();
        connection.close();   
      }
}

【高考工厂模拟器】需要了解RabbitMQ的工作原理。在采用RabbitMQ在此之前,供给通晓RabbitMQ的劳作原理。

【高考工厂模拟器】需要了解RabbitMQ的工作原理。RabbitMQ新闻花费者的代码完成

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import com.rabbitmq.client.QueueingConsumer;

//消费者 
public class RabbitConsumer {

  private final static String QUEUE_NAME = "RabbitMQ_Hello"; //消息队列名

  public static void main(String[] argv) throws Exception {

        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost("127.0.0.1");
       // 打开连接和创建频道,与发送端一样  
        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");
      // 创建队列消费者  
        QueueingConsumer consumer = new QueueingConsumer(channel);
        // 指定消费队列
        channel.basicConsume(QUEUE_NAME, true, consumer);
        while (true) {  //消费者程序运行开着 如果生产者新增了数据会自动获取
          Thread.sleep(500);
             // nextDelivery是一个阻塞方法(内部实现其实是阻塞队列的take方法)  
          QueueingConsumer.Delivery delivery = consumer.nextDelivery();
          String message = new String(delivery.getBody());
          System.out.println("'[x] Received '" + message );
  }   
  }
}

【高考工厂模拟器】需要了解RabbitMQ的工作原理。展开本地的RabbitMQ,之后运维生产者代码,会将新闻存款和储蓄到RabbitMQ中,能够经过RabbitMQ web分界面见到音讯。

高考工厂模拟器 1

高考工厂模拟器 2

高考工厂模拟器 3

高考工厂模拟器 4

运营成本者代码,会将该音信花费掉,能够在RabbitMQ web界面能够发掘下边存款和储蓄的消息意气风发度远非了。
高考工厂模拟器 5

高考工厂模拟器 6

透过那个demo,可以对音讯队列有了贰个的基本的摸底了。

RabbitMQ的劳作原理

RabbitMQ是信息代理。从实质上说,它采纳来自临盆者的新闻,并将它们传递给顾客。在两个之间,它能够依照你给它的路由,缓冲准则实行传递音信。

示例图

高考工厂模拟器 7

RabbitMQ的术语解释

劳动者:生产音信,发送音讯。相像工厂。
花费者:接纳音讯,使用音讯。相似顾客。
队列:存储消息。相同饭店、中间转播站。队列能够积攒超多的音信,因为它基本上是叁个Infiniti定的缓冲区,前提是你的机器有丰裕的积存空间。五个临盆者能够将新闻发送到同二个队列中,多少个客商也足以只从同三个行列选择数据。这正是队列的表征。

本文由美高梅游戏发布于高考工厂模拟器,转载请注明出处:【高考工厂模拟器】需要了解RabbitMQ的工作原理

关键词: