You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

40 lines
1.2 KiB

3 years ago
package com.bx.imclient.task;
import com.alibaba.fastjson.JSONObject;
3 years ago
import com.bx.imclient.listener.MessageListenerMulticaster;
import com.bx.imcommon.contant.IMRedisKey;
3 years ago
import com.bx.imcommon.enums.IMListenerType;
import com.bx.imcommon.model.IMSendResult;
import lombok.AllArgsConstructor;
3 years ago
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;
import javax.annotation.Resource;
3 years ago
import java.util.concurrent.TimeUnit;
;
@Slf4j
@Component
@AllArgsConstructor
public class PrivateMessageResultResultTask extends AbstractMessageResultTask {
3 years ago
@Resource(name = "IMRedisTemplate")
3 years ago
private RedisTemplate<String,Object> redisTemplate;
private MessageListenerMulticaster listenerMulticaster;
@Override
public void pullMessage() {
String key = IMRedisKey.IM_RESULT_PRIVATE_QUEUE;
JSONObject jsonObject = (JSONObject)redisTemplate.opsForList().leftPop(key,10, TimeUnit.SECONDS);
if(jsonObject != null) {
IMSendResult result = jsonObject.toJavaObject(IMSendResult.class);
3 years ago
listenerMulticaster.multicast(IMListenerType.PRIVATE_MESSAGE, result);
3 years ago
}
}
}