Package com.tnsai.protocols.annotations
Annotation 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 messagevoid onMessage(String senderId, Map<String, Object> content)void onMessage(Map<String, Object> content)- content onlyvoid 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 ElementsModifier and TypeOptional ElementDescriptionFilter by sender agent ID.Filter by specific message type string (e.g., "QUERY.ASK", "TASK.REQUEST").intPriority for callback execution when multiple callbacks match.Filter by topic (for BROADCAST and PUBSUB types).Filter by message type.
-
Element Details
-
type
MessageType typeFilter by message type. Default is ALL (accepts all message types).- Default:
ALL
-
fromAgent
String fromAgentFilter by sender agent ID. Empty string means accept messages from any sender.- Default:
""
-
topic
String topicFilter by topic (for BROADCAST and PUBSUB types). Empty string means accept messages from any topic.- Default:
""
-
messageType
String messageTypeFilter by specific message type string (e.g., "QUERY.ASK", "TASK.REQUEST"). Empty string means accept all message types. For common types, you can also usetype().- Default:
""
-
priority
int priorityPriority for callback execution when multiple callbacks match. Higher values execute first. Default is 0.- Default:
0
-