|
|
|
@ -12,7 +12,6 @@ import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil;
|
|
|
|
|
import cn.estsh.i3plus.pojo.platform.bean.SysMessage;
|
|
|
|
|
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserMessage;
|
|
|
|
|
import cn.estsh.i3plus.pojo.platform.bean.SysUser;
|
|
|
|
|
import com.fasterxml.jackson.core.JsonProcessingException;
|
|
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
|
|
import com.rabbitmq.client.Channel;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
@ -42,10 +41,10 @@ public class MessageLetterQueueReceiver {
|
|
|
|
|
private static final Logger LOGGER = LoggerFactory.getLogger(MessageLetterQueueReceiver.class);
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
ISysMessageService sysMessageService;
|
|
|
|
|
private ISysMessageService sysMessageService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
ISysUserService sysUserService;
|
|
|
|
|
private ISysUserService sysUserService;
|
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
|
|
private IPersonnelService personnelService;
|
|
|
|
@ -57,27 +56,28 @@ public class MessageLetterQueueReceiver {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 站内信处理队列
|
|
|
|
|
*
|
|
|
|
|
* @param msg
|
|
|
|
|
* @param channel
|
|
|
|
|
* @param message 发送:rabbitTemplate.convertAndSend(I3CoreQueueConfig.IMPP_MESSAGE_QUEUE, new SysMessage(....));
|
|
|
|
|
*/
|
|
|
|
|
@RabbitListener(queues = PlatformConstWords.IMPP_MESSAGE_LETTER_QUEUE)
|
|
|
|
|
public void processImppMessage(SysMessage msg, Channel channel, Message message) {
|
|
|
|
|
LOGGER.info("【MQ-{}】 数据接收成功:{}",PlatformConstWords.IMPP_MESSAGE_LETTER_QUEUE, msg);
|
|
|
|
|
LOGGER.info("【MQ-{}】 数据接收成功:{}", PlatformConstWords.IMPP_MESSAGE_LETTER_QUEUE, msg);
|
|
|
|
|
try {
|
|
|
|
|
msg = sysMessageService.insertSysMessage(msg);
|
|
|
|
|
|
|
|
|
|
if (!StringUtils.isBlank(msg.getMessageReceiversId())) {
|
|
|
|
|
String[] userIds = msg.getMessageReceiversId().split(",");
|
|
|
|
|
|
|
|
|
|
if(userIds != null && userIds.length > 0){
|
|
|
|
|
if (userIds != null && userIds.length > 0) {
|
|
|
|
|
List<SysUser> userList = personnelService.findSysUserByIds(StringTool.getArrayLong(userIds));
|
|
|
|
|
|
|
|
|
|
if(userList != null && userList.size() > 0){
|
|
|
|
|
if (userList != null && userList.size() > 0) {
|
|
|
|
|
List<SysRefUserMessage> insertList = new ArrayList<>(userList.size());
|
|
|
|
|
SysRefUserMessage refUserMessage;
|
|
|
|
|
|
|
|
|
|
for (SysUser user : userList){
|
|
|
|
|
for (SysUser user : userList) {
|
|
|
|
|
refUserMessage = new SysRefUserMessage();
|
|
|
|
|
refUserMessage.setMessageId(msg.getId());
|
|
|
|
|
refUserMessage.setMessageTitleRdd(msg.getMessageTitle());
|
|
|
|
@ -95,7 +95,7 @@ public class MessageLetterQueueReceiver {
|
|
|
|
|
List<SysRefUserMessage> refList = sysMessageService.insertSysRefUserMessage(insertList);
|
|
|
|
|
|
|
|
|
|
// 站内信使用 Web Socket 推送
|
|
|
|
|
if(refList != null && refList.size() > 0){
|
|
|
|
|
if (refList != null && refList.size() > 0) {
|
|
|
|
|
for (SysRefUserMessage userMessage : refList) {
|
|
|
|
|
MessageWebSocket.sendMessage(userMessage.getReceiverId(), MAPPER.writeValueAsString(userMessage));
|
|
|
|
|
}
|
|
|
|
@ -106,21 +106,21 @@ public class MessageLetterQueueReceiver {
|
|
|
|
|
|
|
|
|
|
// 消息处理完成
|
|
|
|
|
LOGGER.info("【MQ-{}】站内信{} DeliveryTag:{} 处理成功", PlatformConstWords.IMPP_MESSAGE_LETTER_QUEUE,
|
|
|
|
|
msg,message.getMessageProperties().getDeliveryTag());
|
|
|
|
|
msg, message.getMessageProperties().getDeliveryTag());
|
|
|
|
|
channel.basicAck(message.getMessageProperties().getDeliveryTag(), false);
|
|
|
|
|
}catch (IOException e){
|
|
|
|
|
printErrorMessage(e,Exception.class, msg);
|
|
|
|
|
} catch (IOException e) {
|
|
|
|
|
printErrorMessage(e, Exception.class, msg);
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
// 未成功处理,重新发送
|
|
|
|
|
channel.basicNack(message.getMessageProperties().getDeliveryTag(),false,true);
|
|
|
|
|
channel.basicNack(message.getMessageProperties().getDeliveryTag(), false, true);
|
|
|
|
|
} catch (IOException e1) {
|
|
|
|
|
e1.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private void printErrorMessage(Exception e,Class zlass,SysMessage msg){
|
|
|
|
|
private void printErrorMessage(Exception e, Class zlass, SysMessage msg) {
|
|
|
|
|
Long time = System.currentTimeMillis();
|
|
|
|
|
LOGGER.error("【MQ-{}】{} 异常代码:{} 消息内容{},处理出错:{}", PlatformConstWords.IMPP_MESSAGE_LETTER_QUEUE, time, zlass, msg, e.getMessage());
|
|
|
|
|
e.printStackTrace();
|
|
|
|
@ -129,13 +129,13 @@ public class MessageLetterQueueReceiver {
|
|
|
|
|
SysMessage sysMessage = new SysMessage();
|
|
|
|
|
sysMessage.setMessageSenderNameRdd("系统管理员");
|
|
|
|
|
sysMessage.setMessageTitle("【IMPP-MQ异常】站内信消息推送失败");
|
|
|
|
|
sysMessage.setMessageContent("推送站内信["+zlass+"]错误异常代码:"+time);
|
|
|
|
|
sysMessage.setMessageContent("推送站内信[" + zlass + "]错误异常代码:" + time);
|
|
|
|
|
sysMessage.setMessageContentType(ImppEnumUtil.MESSAGE_TYPE_CONTENT.HTML.getValue());
|
|
|
|
|
sysMessage.setMessageSendTime(TimeTool.getNowTime(true));
|
|
|
|
|
sysMessage.setIsSystem(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue());
|
|
|
|
|
sysMessage.setMessageReceiverType(ImppEnumUtil.MESSAGE_RECEIVER_TYPE.EXTERNAL.getValue());
|
|
|
|
|
sysMessage.setMessageReceiversNameRdd("yunhao.wang@estsh.com,wei.peng@estsh.com");
|
|
|
|
|
rabbitTemplate.convertAndSend(PlatformConstWords.IMPP_MESSAGE_MAIL_QUEUE,sysMessage);
|
|
|
|
|
rabbitTemplate.convertAndSend(PlatformConstWords.IMPP_MESSAGE_MAIL_QUEUE, sysMessage);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|