消息中间件RabbitMQ系列,代码操作rabbitmq软件,具体的代码的意思是什么,详细解释(六)

2020-11-20 14:48:14 浏览数 (1)

我们先看发送消息代码

代码语言:javascript复制
public class provider {
    @Test
    public void SendMessage() throws IOException, TimeoutException {
        Connection connection = RabbitMqUtils.getConnection();
//        创建通道
        Channel channel = connection.createChannel();
//        让通道和消息队列进行绑定
        channel.queueDeclare("hello",false,false,false,null);
        channel.basicPublish("","hello",null,"hello jing".getBytes());
        RabbitMqUtils.closeConnectionAndChannel(channel,connection);

    }
}

现在开始解读意思

1 获取rabbitmq连接

代码语言:javascript复制
 Connection connection = RabbitMqUtils.getConnection();

以上这个代码就是通过工具类获取到rabbitmq的连接

2 创建通道

代码语言:javascript复制
Channel channel = connection.createChannel();

获取到rabbitmq的通道

3 根据通道创建队列

代码语言:javascript复制
 channel.queueDeclare("hello",false,false,false,null);
第一个参数

这个方法的第一个参数,就是我们要创建的队列的名字,如果我们没有这个队列,只要运行这个代码,那么就可以创建队列了。

第二个参数:

用来定义队列特性是否要持久化,true 就是要,false就是不要 不持久化的意思就是 不在磁盘里面进行保存。 如果我们写的是false,那么重新启动rabbitmq的时候,我们就会看见创建的队列不再了。

我们改为true,运行,我们看看界面有什么变化

看到界面里面多了一个标志D ,这个的意思就是要将队列持久化,以后重新启动rabbitmq的时候,还是可以看到这个队列的。但是之前队列里面保存的消息不见了,意思就是这个第二个参数变为true,只是将队列持久化,没有将队列里面的消息持久化,如果需要将消息也持久化,需要其他的配置。就是在向队列里面发送消息的时候进行配置

第三个参数

这个参数的意思是是否独占队列 true 就是独占 false 就是不独占

当我们写为false ,那么这个队列之后只是可以用这个通道进行使用,其他的通道或者连接就不可以操作这个队列了。

第四个参数

是否在消费完成之后就自动的删除队列,true 就是自动删除 false就是不自动删除

消费者断开连接之后,这个队列就不在了

4 向队列里面发送消息

代码语言:javascript复制
 channel.basicPublish("","hello",null,"hello jing".getBytes());

这个方法的第二个参数,就是你要发送到的队列的名字,第四个参数的意思就是 你要发送的消息。 第三个参数 就是可以设置消息在队列中持久化的方式 第一个参数就是交换机 的名字

当我们将第三个参数写为MessageProperties.PERSISTENT_TEXT_PLAIN

代码语言:javascript复制
  channel.basicPublish("","hello", MessageProperties.PERSISTENT_TEXT_PLAIN,"hello jing".getBytes());

这个的意思就是 告诉软件,你重新启动之后,我的消息也是要持久化的

0 人点赞