• RabbitMQ (一)第一个hello world


    RabbitMQ是一个消息中间件,负责消息的接收和投递。它可以从生产者那里接收消息,并且投递到消费者。在这期间,它可以路由、缓存,并且可以根据你给的规则持久化消息。

     图例说明:

    表示生产者 (发信人)

    表示队列 (信箱)

    表示消费者(收信人)

    第一个“hello world” 实例的简单实现:

      

     本实例基于java的实现:

    消息发送者:

     

    import com.rabbitmq.client.*;
    public class ClientSender {
        
    public static void main(String[] args) throws java.io.IOException {
            ConnectionFactory factory
    =new ConnectionFactory();
            factory.setHost(
    "localhost");
            factory.setUsername(
    "guest");
            factory.setPassword(
    "123456");
            factory.setVirtualHost(
    "/");
            Connection conn
    =factory.newConnection();
            Channel channel
    =conn.createChannel();
            String queueName
    ="myqueue";
            channel.queueDeclare(queueName, 
    falsefalsefalse,null);
            String message
    ="hello world"+Math.random();
            channel.basicPublish(
    "",queueName, null,message.getBytes());
            System.out.print(
    "send '"+message+"'");
            channel.close();
            conn.close();

        }
    }

    消息接收者

     

    import com.rabbitmq.client.*;
    public class ClientReceiver {
        
    private final static String queueName="myqueue";
        
    public static void main(String[] args) throws java.io.IOException,java.lang.InterruptedException{
            ConnectionFactory factory
    =new ConnectionFactory();
            factory.setHost(
    "localhost");
            factory.setUsername(
    "guest");
            factory.setPassword(
    "123456");
            Connection conn
    =factory.newConnection();
            Channel channel
    =conn.createChannel();
            channel.queueDeclare(queueName, 
    falsefalsefalsenull);
            System.out.println(
    " [*] Waiting for messages. To exit press CTRL+C");
            QueueingConsumer consumer
    =new QueueingConsumer(channel);
            channel.basicConsume(queueName, 
    true,consumer);
            
    while (true) {
                QueueingConsumer.Delivery delivery
    =consumer.nextDelivery();    
                String message
    =new String(delivery.getBody());
                System.out.println(
    " [x] Received '" + message + "'");
                Thread.sleep(
    100);
            }
        }
    }
  • 相关阅读:
    java.lang.String 的 + 号操作到底做了什么事情?
    我的【Java】面试日记
    ReentrantLock源码学习总结 (二)
    ReentrantLock源码学习总结 (一)
    【Dubbo】带着问题看源码:什么是SPI机制?Dubbo是如何实现的?
    假如 Redis Cluster 模式用在 T-io 上
    Win10下安装tensorflow详细过程
    Python 3.7 使用pyhive (坑)
    ARIMA
    AttributeError: 'Series' object has no attribute 'ix'
  • 原文地址:https://www.cnblogs.com/xiazh/p/2003852.html
Copyright © 2020-2023  润新知