RabbitMQ系列十三 RabbitClient 另外说明

2018-11-21  本文已影响0人  时之令
不同的方式获取连接
package com.edu.mq.rabbitmq;

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

import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * 类说明:
 *
 * @author zhangkewei
 * @date 2018/11/21下午11:12
 */
public class RabbitClientOther {


    public static void main( String[] args ) throws Exception {
        ConnectionFactory factory = new ConnectionFactory();
//方式一 逐一设置host,port,virtualhost,
//username,password,
//      factory.setHost("192.168.120.131");
//      factory.setPort(5672);
//      factory.setUsername("guest");
//      factory.setPassword("guest");
//      factory.setVirtualHost("/");

//半成品:一次设置好host和端口
//      factory.setUri("amqp://192.168.120.131:5672");
        //一次性设置好host,端口,用户名,密码  factory.setUri("amqp://guest:guest@192.168.120.131:5672");

//   一次性设置好host,端口,用户名,密码和virtualhost   factory.setUri("amqp://guest:guest@192.168.120.131:5672/vlog");
        factory.setUri("amqp://guest:guest@localhost:5672");
//      factory.setUri("amqps://192.168.120.131:5672");

        /**
         * 可以自定义连接相关属性
         */
        Map<String,Object> clientProperties = new HashMap<>();
        clientProperties.put("author","zhangkewei");
        clientProperties.put("time",new Date());
        factory.setClientProperties(clientProperties);
        /**
         * 自定义连接的名称
         */
        Connection conn = factory.newConnection("自定义连接名称");
        Connection conn2 = factory.newConnection("自定义连接名称2");
        /**
         * 自定义channel的序列号,默认一个系统里面的所有的channel的序列是自增的
         */
        Channel channel = conn.createChannel(10);
        Channel channel1 = conn.createChannel(20);

        /**
         * String basicConsume(String queue, boolean autoAck, String consumerTag, Consumer callback)
         * 这里的consumerTag可以标志是那个消费者
         */
        channel.basicConsume("debug_queue",true,"测试自定义消费者名称",new DefaultConsumer(channel));

        TimeUnit.SECONDS.sleep(120);

        channel.close();
        conn.close();
    }
}


自定义连接名称,这样可以在connections中找到自己的连接,同样也可以一目了然的知道当前的连接用来做什么的。
image.png
定义连接的属性,这里可以作展示
image.png

自定义channel的序列

自定义channel的序列号,默认一个系统里面的所有的channel的序列是自增的


image.png
自定义消费者

重载方法,String basicConsume(String queue, boolean autoAck, String consumerTag, Consumer callback)
这里的consumerTag可以标志是那个消费者


image.png

说明:以上的这些功能,可以有也可以没有,不影响mq的使用,但是有这些,更人性话,更可读,遇到问题,更好的跟踪问题。

上一篇 下一篇

猜你喜欢

热点阅读