在我们发消息的时候,一条消息前面就会出现一个转圈圈的东西,此时将这个消息发送到了tcp层,然后tcp层再去投递到逻辑层,最终实现消息处理的还是逻辑层
当逻辑层处理完成之后,再投递到tcp层,最终tcp层将消息返回给sdk,app收到这条消息后,将那个圈圈去掉
还有其他的情况,消息前有感叹号,也就是逻辑层判断了这条消息不能被发送,然后就要通过tcp层去告知sdk他不能被发送,sdk告诉app这条消息不能发送,就搞一个红色的感叹号
客户端连接的是Tcp层,无法做到一些消息的校验等逻辑工作,所以需要TCP层通过rabbitMQ向逻辑层传递信息。
// 这个注解就是消费者获取rabbitmq中的信息
@RabbitListener(
bindings = @QueueBinding(
value = @Queue(value = Constants.RabbitConstants.Im2MessageService, durable = "true"),
exchange = @Exchange(value = Constants.RabbitConstants.Im2MessageService, durable = "true")
),concurrency = "1"
)
public void onChatMessage(@Payload Message message, @Headers Map<String, Object> headers,
Channel channel) throws IOException {
String msg = new String(message.getBody(), "utf-8");
逻辑层做的工作:
最后一步通过MQ在将消息投递的TCP层