RabbitMQ(Simple简单模式)

一、实现步骤

1.jdk1.8
2.idea:构建maven项目
3.导入rabbitmq的maven依赖
4.启动rabbitmq-server服务
5.定义生产者
6.定义消费者
7.观察消息的再rabbitmq-server服务中的过程
注意:队列前面一定会有个交换机(可能是默认交换机AMPQ)

二、maven依赖

<!--导入rabbitmq依赖-->
        <dependency>
            <groupId>com.rabbitmq</groupId>
            <artifactId>amqp-client</artifactId>
            <version>5.10.0</version>
        </dependency>

三、Simple简单模式案例

消费者

import com.rabbitmq.client.*;
import java.io.IOException;
import java.util.concurrent.TimeoutException;

public class Consumer {
    public static void main(String[] args) throws IOException, TimeoutException {
        //所有的中间件技术都是基于TCP/IP协议基础构建的协议规范,rabbitmq遵循的是ampq协议

        //1.创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("127.0.0.1");
        connectionFactory.setUsername("guest");
        connectionFactory.setPassword("guest");
        connectionFactory.setPort(5672);
        connectionFactory.setVirtualHost("/");
        //2.创建连接Connection
        Connection connection = connectionFactory.newConnection();
        //3.通过连接获取通道channel
        Channel channel = connection.createChannel();
        //4.通过通道创建交换机、声明队列、绑定关系、路由key、发送消息、和接受消息
        channel.basicConsume("q1", true, new DeliverCallback() {
            @Override
            public void handle(String consumerTag, Delivery message) throws IOException {
                System.out.println("收到消息是:" + new String(message.getBody(), "UTF-8"));
            }
        }, new CancelCallback() {
            @Override
            public void handle(String consumerTag) throws IOException {
                System.out.println("接受消息失败...");
            }
        });

        System.out.println("开始接受消息");
        System.in.read();
        //7.关闭通道
        channel.close();
        //8.关闭连接
        connection.close();
    }
}

生产者

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * 生产者
 */
public class  Producer {

    public static void main(String[] args) throws IOException, TimeoutException {
        //所有的中间件技术都是基于TCP/IP协议基础构建的协议规范,rabbitmq遵循的是ampq协议
        //1.创建连接工厂
        ConnectionFactory connectionFactory = new ConnectionFactory();
        connectionFactory.setHost("127.0.0.1");
        connectionFactory.setUsername("guest");
        connectionFactory.setPassword("guest");
        connectionFactory.setPort(5672);
        connectionFactory.setVirtualHost("/");
        //2.创建连接Connection
        Connection connection = connectionFactory.newConnection();
        //3.通过连接获取通道channel
        Channel channel = connection.createChannel();
        //4.通过通道创建交换机、声明队列、绑定关系、路由key、发送消息、和接受消息
        String queueName="q1";
        /*
        参数一:队列名称
        参数二:是否要持久化
        参数三:排他性,是否独占
        参数四:是否自动删除
        参数五:携带附属参数
         */
        channel.queueDeclare(queueName,false,false,false,null);
        //5.准备消息内容
        String msg="hello";
        //6.发送消息给队列queue

         /*
        参数一:交换机
        参数二:队列、路由key
        参数三:消息的状态控制
        参数四:消息主体
         */

        channel.basicPublish("",queueName,null,msg.getBytes());
        //7.关闭通道
        channel.close();
        //8.关闭连接
        connection.close();
        System.out.println("生产成功");
    }
}
posted @ 2021-05-17 23:20  一名初学者  阅读(348)  评论(0)    收藏  举报