要注意:为什么我们在调用web服务或者其他应用服务的时候,推荐使用agent来做代理。这个问题是否明白是解决多agent之间交互的关键。
要知道,agent之间的通信采用异步信息传输机制。这一点十分重要。比如,你所接收不同消息模板的消息可能会在不同的时间到达,并不一定是先发送的消息先接收到。又比如,你声明了一个AID的数组,用于存放所搜索到的能提供不同服务的agent的AID身份。然而,这样做,你就无法准确定位你获取的服务agent是在数组中的哪一个位置。因为你利用DF进行搜索的过程中,并不一定先来搜索的服务就会放在数组的首地址中,因为可能这个服务暂时没有被搜索到,而把另外一个容易发现的服务agent先搜索到了。这就是不用数组的原因。但我们可以考虑利用键值对的集合定义,来确保不同搜索结果存放的是不同的agent.也就是,不能用索引来定位agent的地址。
总之,一句话:agent的通信采用异步通信。