Annotation Interface OnMessageReceived


@Retention(RUNTIME) @Target(METHOD) public @interface OnMessageReceived
Marks a method as a callback for receiving messages.

This is the unified annotation for all message types:

  • Direct messages
  • Broadcast messages
  • PubSub topic messages
  • Request-Reply messages

The annotated method can have various signatures:

  • void onMessage(AgentMessage message) - receives full message
  • void onMessage(String senderId, Map<String, Object> content)
  • void onMessage(Map<String, Object> content) - content only
  • void onMessage(Message message) - protocol message object

Basic Usage - All Messages


 @OnMessageReceived
 public void handleMessage(AgentMessage message) {
     System.out.println("Received: " + message.getContent());
 }
 

Filter by Message Type


 @OnMessageReceived(type = MessageType.DIRECT)
 public void handleDirectMessage(AgentMessage message) {
     // Only direct messages
 }

 @OnMessageReceived(type = MessageType.BROADCAST)
 public void handleBroadcast(Map<String, Object> content) {
     // Only broadcast messages
 }

 @OnMessageReceived(type = MessageType.PUBSUB, topic = "tech-news")
 public void handleTechNews(Map<String, Object> content) {
     // Only PubSub messages on tech-news topic
 }
 

Filter by Sender


 @OnMessageReceived(fromAgent = "sender-001")
 public void handleFromSpecificSender(AgentMessage message) {
     // Only from sender-001
 }
 
Author:
TnsAI Team
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    Filter by sender agent ID.
    Filter by specific message type string (e.g., "QUERY.ASK", "TASK.REQUEST").
    int
    Priority for callback execution when multiple callbacks match.
    Filter by topic (for BROADCAST and PUBSUB types).
    Filter by message type.
  • Element Details

    • type

      Filter by message type. Default is ALL (accepts all message types).
      Default:
      ALL
    • fromAgent

      String fromAgent
      Filter by sender agent ID. Empty string means accept messages from any sender.
      Default:
      ""
    • topic

      String topic
      Filter by topic (for BROADCAST and PUBSUB types). Empty string means accept messages from any topic.
      Default:
      ""
    • messageType

      String messageType
      Filter by specific message type string (e.g., "QUERY.ASK", "TASK.REQUEST"). Empty string means accept all message types. For common types, you can also use type().
      Default:
      ""
    • priority

      int priority
      Priority for callback execution when multiple callbacks match. Higher values execute first. Default is 0.
      Default:
      0