|
@@ -40,6 +40,8 @@ public class GoldCoinProductMessageConsumer {
|
|
public void handleCalculation(Message m, Channel channel) throws IOException {
|
|
public void handleCalculation(Message m, Channel channel) throws IOException {
|
|
CoinProducerMessage message = null;
|
|
CoinProducerMessage message = null;
|
|
boolean completed = false;
|
|
boolean completed = false;
|
|
|
|
+ //是否继续计算
|
|
|
|
+ boolean calculateFlag = false;
|
|
CoinProducerMessage newMessage = null;
|
|
CoinProducerMessage newMessage = null;
|
|
try {
|
|
try {
|
|
String msg = new String(m.getBody());
|
|
String msg = new String(m.getBody());
|
|
@@ -62,6 +64,7 @@ public class GoldCoinProductMessageConsumer {
|
|
BeanUtils.copyProperties(coinProdState, newMessage);
|
|
BeanUtils.copyProperties(coinProdState, newMessage);
|
|
//重新设置消息id
|
|
//重新设置消息id
|
|
newMessage.setMsgId(IdWorker.getIdStr());
|
|
newMessage.setMsgId(IdWorker.getIdStr());
|
|
|
|
+ calculateFlag = true;
|
|
} else {
|
|
} else {
|
|
//发送金币结算消息
|
|
//发送金币结算消息
|
|
newMessage = new CoinProducerMessage();
|
|
newMessage = new CoinProducerMessage();
|
|
@@ -72,10 +75,12 @@ public class GoldCoinProductMessageConsumer {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- //如过没有发生异常才发送下一次延迟计算消息
|
|
|
|
|
|
+ //如果计算结束则发送计算完成的消息
|
|
if (completed) {
|
|
if (completed) {
|
|
goldCoinProducer.sendCalculationCompleteMessage(newMessage);
|
|
goldCoinProducer.sendCalculationCompleteMessage(newMessage);
|
|
- } else {
|
|
|
|
|
|
+ }
|
|
|
|
+ //如果需要继续计算则发送继续计算的消息
|
|
|
|
+ if (calculateFlag) {
|
|
goldCoinProducer.sendDelayCalculationMessage(newMessage);
|
|
goldCoinProducer.sendDelayCalculationMessage(newMessage);
|
|
}
|
|
}
|
|
channel.basicAck(m.getMessageProperties().getDeliveryTag(), false);
|
|
channel.basicAck(m.getMessageProperties().getDeliveryTag(), false);
|