RabbitMQ

动漫资讯时间:2024-04-29 08:14:34点击:979

首先看一段amqp-发送端的示例代码(展示出次要部分):

=new();.(ip);.(5672);.("root");.("root");=.();=.();="DemoTest:"+.();.(,,.,.());.();.();

相信使用java客户端的同学来说,这段代码并不陌生,次要的作用是发送一条消息至然后关闭。通过抓包工具可以看到整个AMQP协议的流程,如下图:
(xx.xx.48.240是的ip,xx.xx.197.73是的ip)

下面通过源码来分析下有关的整个流程,对于上面AMQP流程中的-到.Open-Ok的部分。

首先是类(文章开篇的demo中),这里次要包含一些与连接的配置参数等,比如,,,host,port,,,,,(只列出部分)。

这个类中其余都是些和方法,但是有个方法是关键,文中开篇的demo代码下面列出详细内容:

/***anew,thefrom*thelist.**Ifahref=""/a*is,thebythiswillbe{@link}.*willpickafromthelist.**@foronthe*@anof(/port)totryin*@antothe*@java.io.ifita*@seeahref=""/a*/(,[]),{=();=();if(()){//seecom...impl..#conn=new(,,);conn.init();conn;}else{=;for(addr:){try{=.(addr);conn=new(,);conn.();conn;}(e){=e;}}(!=)?:new("to");}}

方法中首先是=();这个是用来处理与之间的通信帧()的,包括建立通信链路(java的原生,注意这里没有NIO也没有)。

(){new(,,,());}

调用()方法得到对象之后再:“=.(addr);”返回的是对象,这个对象是对的一个封装,完全可以看成是一个对象。
注意这里的的参数默认设置为true,而不是默认的。当然你也可以调用的自行设置。

//这个方法是的唯一的方法void(){//'s,formorelow.(true);}

有关的参数:默认情况下发送数据是采用算法。算法是指发送方数据不会急速发送出去,而是先放在缓冲区内,等待缓冲区满了,在发出去。算法适用于需要发送大量数据的应用场景。这种算法减少传输的次数增加性能。但是如果对于需要即使响应的,小批量数据的应用场景,例如网络游戏就不能采用算法了。默认是,表示采用算法。

推荐内容