Я хочу подключиться к агенту, созданному в основном контейнере, который работает на компьютере. Предположим, что идентификатор основного контейнера — [email protected]. Как я могу подключиться к агенту внутри этого контейнера и передать данные? Заранее спасибо.
Как отправить сообщение агенту в основном контейнере через http в Jade?
Ответы (1)
Вам понадобится ContainerController (будь то для основного контейнера или контейнера агента, не имеет значения), который является частью интересующей вас платформы агента.
Самый простой способ получить его — просто создать новый контейнер агента и подключить его к платформе.
import jade.core.Runtime;
import jade.core.Profile;
import jade.core.ProfileImpl;
...
Runtime myRuntime = Runtime.instance();
// prepare the settings for the platform that we're going to connect to
Profile myProfile = new ProfileImpl();
myProfile.setParameter(Profile.MAIN_HOST, "myhost");
myProfile.setParameter(Profile.MAIN_PORT, "1099");
// create the agent container
ContainerController myContainer = myRuntime.createAgentContainer(myProfile);
затем вы можете использовать метод getAgent()
ContainerController для получения AgentController.
AgentController myAgentController = myContainer.getAgent("agent-local-name");
наконец, если вы хотите передать данные агенту, вы можете сделать это с помощью сообщений O2A (агент объекта 2). Это в основном позволяет вам передавать любой объект агенту через контроллер агента.
Object myObject = "Real-Object-Would-Go-Here";
myAgentController.putO2AObject(myObject, false);
внутри агента (предпочтительно внутри поведения) вы можете прослушивать этот объект следующим образом:
// start accepting O2A communications
setEnabledO2ACommunication(true, 0);
// start monitoring them
addBehaviour(new CyclicBehaviour(this) {
@Override
public void action() {
// get an object from the O2A mailbox
Object myObject = myAgent.getO2AObject();
// if we actually got one
if(myObject != null) {
// do something with it
} else {
block();
}
}
});
Источники: документация JADE.
person
peter
schedule
09.12.2013