MessageDispatcher.java 1.1 KB

12345678910111213141516171819202122232425262728293031323334
  1. package com.yonge.netty.common.message;
  2. import io.netty.channel.ChannelHandlerContext;
  3. import io.netty.channel.SimpleChannelInboundHandler;
  4. import java.util.concurrent.ExecutorService;
  5. import java.util.concurrent.Executors;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. public class MessageDispatcher extends SimpleChannelInboundHandler<Message<?>> {
  8. @Autowired
  9. private MessageHandlerContainer messageHandlerContainer;
  10. private final ExecutorService executor = Executors.newFixedThreadPool(200);
  11. @Override
  12. protected void channelRead0(ChannelHandlerContext ctx, Message<?> message) {
  13. // 获得 type 对应的 MessageHandler 处理器
  14. MessageHandler messageHandler = messageHandlerContainer.getMessageHandler(message.getType());
  15. // 获得 MessageHandler 处理器 的消息类
  16. // Class<? extends Message> messageClass = MessageHandlerContainer.getMessageClass(messageHandler);
  17. // 执行逻辑
  18. executor.submit(new Runnable() {
  19. @Override
  20. public void run() {
  21. messageHandler.execute(ctx.channel(), message.getData());
  22. }
  23. });
  24. }
  25. }