Spring Messaging

Spring Messaging

Spring MessagingSpring Framework中的一个模块,其作用就是统一消息的编程模型。比如消息Messaging对应的模型就包括一个消息体Payload和消息头Header:

消息结构

package org.springframework.messaging;

public interface Message<T> {
  T getPayload();
  MessageHeaders getHeaders();
}

消息通道MessageChannel用于接收消息,调用send方法可以将消息发送至该消息通道中:

消息传递

@FunctionalInterface
public interface MessageChannel {
  long INDEFINITE_TIMEOUT = -1;
  default boolean send(Message<?> message) {
    return send(message, INDEFINITE_TIMEOUT);
  }
  boolean send(Message<?> message, long timeout);
}

消息消费

由消息通道的子接口可订阅的消息通道SubscribableChannel实现,被MessageHandler消息处理器所订阅:

public interface SubscribableChannel extends MessageChannel {
  boolean subscribe(MessageHandler handler);
  boolean unsubscribe(MessageHandler handler);
}

MessageHandler真正地消费/处理消息:

@FunctionalInterface
public interface MessageHandler {
  void handleMessage(Message<?> message) throws MessagingException;
}

Spring Messaging内部在消息模型的基础上衍生出了其它的一些功能,如:

  • 消息接收参数及返回值处理:消息接收参数处理器HandlerMethodArgumentResolver配合@Header, @Payload等注解使用;消息接收后的返回值处理器HandlerMethodReturnValueHandler配合@SendTo注解使用;
  • 消息体内容转换器MessageConverter
  • 统一抽象的消息发送模板AbstractMessageSendingTemplate
  • 消息通道拦截器ChannelInterceptor
上一页