• 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);
            }
        }
    }
  • 相关阅读:
    Java8新特性2 lambda表达式
    Java8新特性1
    多线程与高并发(2)Volatile+CAS
    多线程与高并发 Synchronize
    《重构:改善既有代码的设计》读书笔记5 简化函数调用
    《重构:改善既有代码的设计》读书笔记4 简化条件表达式
    mysql语法大全使用篇
    《重构:改善既有代码的设计》读书笔记3 重新组织数据
    《重构:改善既有代码的设计》读书笔记2 在对象之间搬移特性
    《重构:改善既有代码的设计》读书笔记1——重新组织函数
  • 原文地址:https://www.cnblogs.com/xiazh/p/2003852.html
Copyright © 2020-2023  润新知