首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jade Java Agent通信

Jade Java Agent通信
EN

Stack Overflow用户
提问于 2016-06-30 17:49:14
回答 1查看 1.1K关注 0票数 1

我在我的项目中为多代理平台的jade工作。

我有一个主容器和一个包含代理的代理容器。

我想将数据从代理发送到代理容器或主容器。

因为我的代理是一个客户端,我的主容器将是一个服务器。

在jade架构中,我了解到代理容器将包含代理。

这有可能吗?

我想知道有没有在代理之间发送数据的apis。

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2016-09-01 20:17:17

我不确定你想要实现的是什么。您从JADE代理发送的ACLMessage的最终接收者是谁?是驻留在目标容器中的所有代理吗?

为了澄清,容器本质上是代理可以驻留的地址,它本身并不是一个可以发送和接收消息的实体。在JADE框架中,代理为ACLMessages提供了一个“收件箱”,基本上是一个包含已接收消息列表的BlockingQueue对象。代理能够观察它自己的列表,并在其生命周期进行时将其视为列表。容器不具备此功能。

通过添加接收方和其他详细信息,ACLMessages可以针对特定的代理。接收消息的代理可以通过利用MessageTemplate侦听特定的ACLMessages,您可以根据匹配条件从代理的“收件箱”中专门选择消息,例如:

代码语言:javascript
复制
Messagetemplate mt = MessageTemplate.MatchPerformative(ACLMessage.INFORM);
ACLMessage msg = myAgent.receive(mt);

将允许代理从其“收件箱”中获取下一条ACLMessage.INFORM消息。

要获得更多的能力,我建议您通过jade API

此外,我认为您正在尝试实现的目标是向容器中的所有代理发送消息。您可以向AMS代理查询平台上的代理列表,然后按ContainerID对其进行筛选。下面是一些帮助您入门的代码:

代码语言:javascript
复制
AMSAgentDescription[] agents = null;
SearchConstraints sc = new SearchConstraints();
// if multiple searchs are done, isolate them based on the name of searching agent
sc.setSearchId(getAID().getName());
sc.setMaxResults(new Long(-1)); // long value of -1 means get all agents
agents = AMSService.search(this, new AMSAgentDescription(), sc); //Query AMS agent for available agents

此代码将检索平台上注册到AMS代理的所有可用代理的列表。如果你有任何问题,祝你好运并发帖:)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38119553

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档