美文网首页
java客户端使用rabbitmq基础(一)

java客户端使用rabbitmq基础(一)

作者: 小豆_1122 | 来源:发表于2020-03-21 10:07 被阅读0次


1.使用idea或其他工具,创建一个java的maven工程;

2. 在pom文件中引入rabbitmq的jar包:

<!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client -->

<dependency>

    <groupId>com.rabbitmq</groupId>

    <artifactId>amqp-client</artifactId>

    <version>5.8.0</version>

</dependency>

3. 在自己创建的Java包中,创建rabbitmq的生产者类 RabbitmqProduct(类名根据自己的需要自己起名即可)

引入的类所在的位置

import com.rabbitmq.client.Channel;

import com.rabbitmq.client.Connection;

import com.rabbitmq.client.ConnectionFactory;

import com.rabbitmq.client.MessageProperties;

先定义几个变量:

//队列

private static final  String  QUEUQ_NAME ="demo.queue";

//交换器

private static final String EXCHANGE_NAME="demo.exchange";

//路由

private static final String LUYOU="demo.luyou";

//创建main方法

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

     //创建连接工厂

        ConnectionFactory factory=new ConnectionFactory();

       factory.setUsername("admin"); //自己定义

       factory.setPassword("123456"); //自己定义

       factory.setHost("192.168.0.132"); //rabbitmq安装的服务位置

        factory.setPort(5672);       //rabbitmq 端口

        //创建连接

        Connection connection=factory.newConnection();

        //创建信道,在信道上传递消息

        Channel channel=connection.createChannel();

        //创建交换器

       //direct:把消息路由到那些BindingKey和RoutingKey完全匹配的队列中;

       channel.exchangeDeclare(EXCHANGE_NAME,"direct");

         //创建队列

        channel.queueDeclare(QUEUE_NAME,false,false,false,null);

        //通过路由绑定交换器与队列

       channel.queueBind(QUEUE_NAME,EXCHANGE_NAME,LUYOU);

       //发送消息 第三个参数是属性标签的参数,第四个是 消息内容是个消息字节类型

        channel.basicPublish(EXCHANGE_NAME,LUYOU, MessageProperties.PERSISTENT_TEXT_PLAIN,"Hello WOrld 你好".getBytes());

        channel.close();

        connection.close();

}

4.创建rabbitmq消费者 RabbitMQConsumer类

    import com.rabbitmq.client.*;

    import java.io.IOException;

    import java.util.concurrent.TimeUnit;

      //定义变量 

        private static final String    QUEUE_NAME="demo.queue";

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

//连接工厂

    ConnectionFactory factory=new ConnectionFactory();

    factory.setUsername("admin");

    factory.setPassword("123456");

    factory.setHost("192.168.0.132");

    factory.setPort(5672);

    //创建连接

    Connection connection=factory.newConnection();

    //创建信道,在信道上传递消息

    Channel channel=connection.createChannel();

    //告诉RabbitMQ,我可以接收消息了 ,DefaultConsumer 是消息来了我如何处理

    channel.basicConsume(QUEUE_NAME,new DefaultConsumer(channel){

        @Override

        public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties                        properties, byte[] body)throws IOException {

                   System.out.println("消费者接收到:"+new String(body));

                    //告诉服务器我收到消息了

                    channel.basicAck(envelope.getDeliveryTag(),false);

            }

    });

  TimeUnit.SECONDS.sleep(5);

  //关闭信道

  channel.close();

  connection.close();

}

相关文章

网友评论

      本文标题:java客户端使用rabbitmq基础(一)

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