Kỹ thuật truyền thông được sử dụng ở đây là truyền thông điệp không đồng bộ. Mỗi một Agent sẽ có một hộp thư (hàng đợi các thông điệp của Agent) trong đó đặt các thông điệp do các Agent khác gửi tới. Agent sẽ được thông báo mỗi khi có thông điệp được thêm vào hàng đợi. Khi Agent thực sự xem xét đến thông điệp đó (lấy thông điệp ra khỏi hàng đợi) thì người lập trình mới thực sự xử lý nội dung thông điệp.
Hình 4.5. Cơ chế truyền thông điệp không đồng bộ của Jade
Quy trình truyền thông ACL giữa các Agent có thể được mô tả qua Hình 4.10 ở trên. Quá trình này gồm một số bước cơ bản sau đây:
Chuẩn bị nội dung thông điệp: chỉ đơn giản là điền đầy các trường của
đối tượng ACLMessage.
Gửi thông điệp: bằng cách gọi phương thức send() của một đối tượng
thuộc lớp Agent. Đoạn code sau đây sẽ gửi một thông điệp đến Agent có tên BidderA với thông báo „Auction is Over‟.
ACLMessage msg = new ACLMessage(ACLMessage.INFORM); msg.addReceiver(new AID(“BidderA”, AID.ISLOCALNAME)); msg.setLanguage(“English”);
msg.setOntology(“Auction-ontology”); msg.setContent(“Auction is Over”); send(msg);
Nhận thông điệp vào hàng đợi: Trong thời gian chạy, JADE tự động gửi
thông điệp vào hàng đợi thông điệp cá nhân của Agent nhận.
Nhận và xử lý thông điệp: Một Agent có thể lấy các thông điệp từ hàng
đợi của mình bằng cách gọi thực hiện phương thức receive(). Phương thức
A1 A2
Chuẩn bị thông điệp gửi A2
Gửi thông điệp Lưu thông điệp vào hàng đợi của A2
Lấy thông điệp từ hàng đợi và xử lý
này trả về thông điệp đầu tiên trong hàng đợi thông điệp, sau đó xóa nó khỏi hàng đợi. Sau khi lấy được thông điệp từ hàng đợi, Agent sẽ tiến hành xử lý thông tin nhận được và đưa ra quyết định hành động tiếp theo.