关于java使用rabbitMq的基本用法
创建连接
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 1
2 public static ConnectionFactory factory;
3 public static Connection getConnection(String username,String password,String host,int port,String virtualhost) {
4 if (factory==null){
5 factory=getFactory(username,password,host,port,virtualhost);
6 }
7 try {
8 return factory.newConnection();
9 } catch (Exception e) {
10 throw new RuntimeException("创建rabbit client 连接失败"+e);
11 }
12 }
13
14 private synchronized static ConnectionFactory getFactory(String username, String password, String host, int port, String virtualhost) {
15 if (factory!=null)
16 return factory;
17 ConnectionFactory factory=new ConnectionFactory();
18 factory.setUsername(username);
19 factory.setPassword(password);
20 factory.setVirtualHost(virtualhost);
21 factory.setHost(host);
22 factory.setPort(port);
23
24 return factory;
25 }
26
因为 这个connection是 长连接,所以不建议每个操作都创建一个connection,因为那样会产生很多额外的网络开销。
创建channel:
1
2 1Channel channel=connection.createChannel()
2
通道也是长连接的,但是程序抛出异常时,可能导致通道被关闭,所以它的生命周期要比 connection短点,对每个操作打开和关闭一个通道是可以的(但通常不是必要的)。
尝试消费一个不存在的队列消息,会抛出异常导致channel关闭,channel一旦关闭就不能再使用了,需要创建新的channel。