RabbitMQ(一)

2020-08-19  本文已影响0人  尼尔君

pom

 <!-- https://mvnrepository.com/artifact/com.rabbitmq/amqp-client -->
    <dependency>
      <groupId>com.rabbitmq</groupId>
      <artifactId>amqp-client</artifactId>
      <version>5.9.0</version>
    </dependency>

生产者


public class App 
{
    public static void main( String[] args )
    {

        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost(" ");
        factory.setPort( );
        factory.setUsername(" ");
        factory.setPassword(" ");


        try (Connection connection = factory.newConnection();
             Channel channel = connection.createChannel()) {

            channel.queueDeclare("nihao",false,false,false,null);

            String  message = "世界你好!";

            channel.basicPublish("","nihao",null,message.getBytes());


        } catch (TimeoutException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

消费者

package org.example;

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

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * @author nier
 * @create 2020-08-18 23:56
 */

public class Consumer {
    public static void main(String[] args) throws IOException, TimeoutException {

        ConnectionFactory factory = new ConnectionFactory();
        factory.setHost();
        factory.setPort();
        factory.setUsername();
        factory.setPassword();

        Connection connection = factory.newConnection();
        Channel channel = connection.createChannel();

        /**
         * 参数1 队列名称
         * 参数2 是否持久化
         * 参数3 是否独占(当前连接)
         * 参数4 消费后是否自动删除
         * 参数5 其他配置
         */
        channel.queueDeclare("nihao", false, false, false, null);
        System.out.println(" [*] Waiting for messages. To exit press CTRL+C");
        DeliverCallback deliverCallback = (consumerTag, delivery) -> {
            String message = new String(delivery.getBody(), "UTF-8");
            System.out.println(" [x] Received '" + message + "'");
        };

        /**
         * @param queue队列名称
         * @param autoAck如果服务器应考虑消息,则为true
         * @param 交付后确认; 如果服务器应该期望则返回false
         * @param deliveryCallback传递消息时的回调
         * @param cancelCallback取消使用方时的回调
         * @return 返回服务器生成的consumerTag
         */
        channel.basicConsume("nihao", true, deliverCallback, consumerTag -> { });
    }
}

上一篇下一篇

猜你喜欢

热点阅读