不同的方式获取连接
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的使用,但是有这些,更人性话,更可读,遇到问题,更好的跟踪问题。
网友评论