zoukankan      html  css  js  c++  java
  • RabbitMQ Java实例

    引入RabbitMQ的jar包

    <dependency>
        <groupId>com.rabbitmq</groupId>
        <artifactId>amqp-client</artifactId>
        <version>5.1.2</version>
    </dependency>

    创建消息生产者

     1 import com.rabbitmq.client.Channel;
     2 import com.rabbitmq.client.Connection;
     3 import com.rabbitmq.client.ConnectionFactory;
     4 
     5 import java.io.IOException;
     6 import java.util.concurrent.TimeoutException;
     7 
     8 public class Producer {
     9     private static final String QUEUE_NAME ="queue.test";
    10 
    11     public static void main(String[] args) throws IOException, TimeoutException {
    12         //创建连接工厂
    13         ConnectionFactory connectionFactory = new ConnectionFactory();
    14         connectionFactory.setHost("localhost");
    15         //创建一个连接
    16         Connection connection = connectionFactory.newConnection();
    17         //创建一个通道
    18         Channel channel = connection.createChannel();
    19         //声明队列
    20         //queueDeclare第一个参数表示队列名称、
    21         // 第二个参数为是否持久化(true表示是,队列将在服务器重启时生存)、
    22         // 第三个参数为是否是独占队列(创建者可以使用的私有队列,断开后自动删除)、
    23         // 第四个参数为当所有消费者客户端连接断开时是否自动删除队列、第五个参数为队列的其他参数
    24         channel.queueDeclare(QUEUE_NAME,false,false,false,null);
    25         String msg = "hello rabbit";
    26         //发送消息到队列
    27         //basicPublish第一个参数为交换机名称、
    28         // 第二个参数为队列映射的路由key、
    29         // 第三个参数为消息的其他属性、
    30         // 第四个参数为发送信息的主体
    31         channel.basicPublish("",QUEUE_NAME,null,msg.getBytes("UTF-8"));
    32         System.out.println("Producer Send +'" + msg + "'");
    33         channel.close();
    34         connection.close();
    35     }
    36 }

    创建消费者

    package com.ysl.rabbit;
    
    import com.rabbitmq.client.*;
    
    import java.io.IOException;
    import java.util.concurrent.TimeoutException;
    
    public class Customer {
    
        private static final String QUEUE_NAME ="queue.test";
    
        public static void main(String[] args) throws IOException, TimeoutException {
            //创建连接工厂
            ConnectionFactory connectionFactory = new ConnectionFactory();
            connectionFactory.setHost("localhost");
            connectionFactory.setUsername("admin");
            connectionFactory.setPassword("admin");
            //创建一个连接
            Connection connection = connectionFactory.newConnection();
            //创建一个通道
            Channel channel = connection.createChannel();
            //声明队列
            //queueDeclare第一个参数表示队列名称、
            // 第二个参数为是否持久化(true表示是,队列将在服务器重启时生存)、
            // 第三个参数为是否是独占队列(创建者可以使用的私有队列,断开后自动删除)、
            // 第四个参数为当所有消费者客户端连接断开时是否自动删除队列、第五个参数为队列的其他参数
            channel.queueDeclare(QUEUE_NAME,false,false,false,null);
            System.out.println("Customer Waiting Received messages");
            Consumer consumer = new DefaultConsumer(channel){
                /**
                 * envelope主要存放生产者相关信息(比如交换机、路由key等)body是消息实体。
                 * @throws IOException
                 */
                @Override
                public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                    String message = new String(body, "UTF-8");
                    System.out.println("Customer Received '" + message + "'");
                }
            };
            //自动回复队列应答 -- RabbitMQ中的消息确认机制
            channel.basicConsume(QUEUE_NAME,true, consumer);
        }
    }
  • 相关阅读:
    杨晓峰-Java核心技术-6 动态代理 反射 MD
    ARouter 路由 组件 跳转 MD
    领扣-5 最长回文子串 Longest Palindromic Substring MD
    算法 递归 迭代 动态规划 斐波那契数列 MD
    二叉树 遍历 先序 中序 后序 深度 广度 MD
    算法 数组中出现次数最多的数字 MD
    领扣-754 到达终点数字 Reach a Number MD
    领扣-1/167 两数之和 Two Sum MD
    文件 File 常见操作 工具 MD
    IO流 简介 总结 API 案例 MD
  • 原文地址:https://www.cnblogs.com/senlinyang/p/8433196.html
Copyright © 2011-2022 走看看