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