9 changed files with 178 additions and 11 deletions
@ -0,0 +1,15 @@
|
||||
package net.sopod.soim.das.user.api.mq; |
||||
|
||||
/** |
||||
* ChatMQ |
||||
* |
||||
* @author tmy |
||||
* @date 2022-05-30 17:43 |
||||
*/ |
||||
public class ChatMQ { |
||||
|
||||
private MQType mqType; |
||||
|
||||
private byte[] body; |
||||
|
||||
} |
||||
@ -0,0 +1,39 @@
|
||||
package net.sopod.soim.das.user.api.mq; |
||||
|
||||
import net.sopod.soim.common.constant.Consts; |
||||
import net.sopod.soim.common.util.Jackson; |
||||
import net.sopod.soim.das.user.api.model.entity.ImMessage; |
||||
import org.springframework.amqp.core.Message; |
||||
import org.springframework.amqp.core.MessageProperties; |
||||
import org.springframework.amqp.support.converter.AbstractMessageConverter; |
||||
import org.springframework.amqp.support.converter.MessageConversionException; |
||||
|
||||
/** |
||||
* ChatMessageConverter |
||||
* |
||||
* @author tmy |
||||
* @date 2022-05-30 18:07 |
||||
*/ |
||||
public class ChatMessageConverter extends AbstractMessageConverter { |
||||
|
||||
@Override |
||||
protected Message createMessage(Object object, MessageProperties messageProperties) { |
||||
if (object instanceof Message) { |
||||
return (Message) object; |
||||
} |
||||
byte[] bytes = Jackson.msgpack().serializeBytes(object); |
||||
if (bytes.length > 100 * Consts.KB) { |
||||
// TODO 压缩
|
||||
} |
||||
|
||||
return null; |
||||
} |
||||
|
||||
@Override |
||||
public Object fromMessage(Message message) throws MessageConversionException { |
||||
byte[] body = message.getBody(); |
||||
Jackson.msgpack().deserializeBytes(body, ImMessage.class); |
||||
return null; |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,27 @@
|
||||
package net.sopod.soim.das.user.api.mq; |
||||
|
||||
import net.sopod.soim.common.util.Jackson; |
||||
import net.sopod.soim.common.util.StringUtil; |
||||
import net.sopod.soim.das.user.api.model.entity.ImMessage; |
||||
import org.springframework.amqp.core.Message; |
||||
import org.springframework.amqp.core.MessageProperties; |
||||
|
||||
/** |
||||
* ChatMsg |
||||
* |
||||
* @author tmy |
||||
* @date 2022-05-30 15:03 |
||||
*/ |
||||
public class ChatMsg extends Message { |
||||
|
||||
public ChatMsg(ImMessage imMessage) { |
||||
super(Jackson.msgpack().serializeBytes(imMessage), getMessageProperties(imMessage)); |
||||
} |
||||
|
||||
private static MessageProperties getMessageProperties(ImMessage imMessage) { |
||||
MessageProperties messageProperties = new MessageProperties(); |
||||
messageProperties.setMessageId(StringUtil.toString(imMessage.getId())); |
||||
return messageProperties; |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,47 @@
|
||||
package net.sopod.soim.das.user.api.mq; |
||||
|
||||
import net.sopod.soim.das.user.api.model.entity.ImGroupMessage; |
||||
import net.sopod.soim.das.user.api.model.entity.ImMessage; |
||||
|
||||
/** |
||||
* MQType |
||||
* |
||||
* @author tmy |
||||
* @date 2022-05-30 17:43 |
||||
*/ |
||||
public enum MQType { |
||||
|
||||
/** 单聊消息 */ |
||||
IM_MESSAGE("IM_MESSAGE", ImMessage.class), |
||||
|
||||
/** 群聊消息 */ |
||||
IM_GROUP_MESSAGE("IM_GROUP_MESSAGE", ImGroupMessage.class); |
||||
|
||||
private final Class<?> beanClazz; |
||||
|
||||
private final String queueName; |
||||
|
||||
MQType(String queueName, Class<?> beanClazz) { |
||||
this.queueName = queueName; |
||||
this.beanClazz = beanClazz; |
||||
} |
||||
|
||||
public Class<?> getBeanClazz() { |
||||
return beanClazz; |
||||
} |
||||
|
||||
public String getQueueName() { |
||||
return queueName; |
||||
} |
||||
|
||||
public static MQType getMQType(Class<?> beanClazz) { |
||||
MQType[] values = values(); |
||||
for (MQType type : values) { |
||||
if (type.beanClazz == beanClazz) { |
||||
return type; |
||||
} |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
} |
||||
Loading…
Reference in new issue