RabbitMq-3入门案例

rabbitmq入门

RabbitMq-3入门案例_第1张图片

1.生产者(服务提供方)

//依赖
 <dependencies>
<!--        rabbitmq客户端依赖-->
        <dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>5.8.0</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>
    </dependencies>
<!--    指定jdk版本-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>8</source>
                    <target>8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

使用步骤

1.创建连接队列名称
public static final String QUEUE_NAME="hello";
2.创建连接工厂

//ip和账号密码以自己电脑为准
 public static void main(String[] args) throws IOException, TimeoutException {
        //创建连接工厂
        ConnectionFactory factory=new ConnectionFactory();
        //工厂ip连接rabbitmq的队列
        factory.setHost("192.168.187.132");
        factory.setUsername("admin");
        factory.setPassword("admin");

3.创建连接

//连接后不是直接使用,而是通过信道
Connection connection = factory.newConnection();
        Channel channel=connection.createChannel();

4.设置信道参数

/**
         * 生成一个队列,下面使用到的参数
         * 1.队列名称
         * 2.队列里面的消息是否持久化,默认false存在内存,true持久化,存在磁盘
         * 3.队列消息是否共享,true表示可共享,false表示只能一个人使用
         * 4.最后一个消费者断开连接以后,是否自动删除,true表示自动删除
         * 5.其他参数
         */

        channel.queueDeclare(QUEUE_NAME,false,false,false,null);
        String message="hello rabbitmq";

5.发送信息

/**
         * 发送一个消费
         * 1.发送到哪一台交换机
         * 2.路由的key,本次是队列的名称
         * 3.其他参数消息
         * 4.发送消息的消息体
         */
        channel.basicPublish("",QUEUE_NAME,null,message.getBytes());
        System.out.println("消息发送成功");

2.消费者

使用步骤

1.定义队列名称

//必须和生产者的队列名称一样,才能接收到消息
public static final String  QUEUE_NAME="hello";

2.创建工厂

public static void main(String[] args) throws IOException, TimeoutException {
        ConnectionFactory factory=new ConnectionFactory();
        factory.setHost("192.168.187.132");
        factory.setUsername("admin");
        factory.setPassword("admin");

3.建立连接

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

4.申明接收消息

DeliverCallback deliverCallback=(consumerTag,message)->
        {
            System.out.println(new String(message.getBody()));
        };
        CancelCallback cancelCallback=consumerTag->
        {
            System.out.println("消息被中断");
        };

5.接收消息

/**
         * 消费者消费消息
         * 1.消费哪个队列
         * 2.消费成功后,是否需要自动应答,true表示自动应答
         * 3.消费未成功的回调
         * 4.消费者取消消费的回调
         */
        channel.basicConsume(QUEUE_NAME,true,deliverCallback,cancelCallback);

注意:在使用mq的时候,需要将端口打开,并且登陆的账号需要获取权限
获取权限
RabbitMq-3入门案例_第2张图片
RabbitMq-3入门案例_第3张图片

你可能感兴趣的:(rabbitmq,rabbitmq,分布式)