生产者与消费者 加依赖
根据自己的MQ版本来指定版本号
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
<version>2.0.3</version>
</dependency>
生产者
2.加配置
rocketmq:
name-server: localhost:9876
producer:
group: test-group
3.编写生产者
private final RocketMQTemplate rocketMQTemplate;
//convertAndSend(topic,发送的数据);
rocketMQTemplate.convertAndSend("add_bouns", UserAddBonusMsgDTO.builder().userId(share.getUserId()).bonus(50).build());
消费者
4.加配置
rocketmq:
name-server: localhost:9876
5.编写消费者
import com.itmuch.usercenter.dao.user.BonusEventLogMapper;
import com.itmuch.usercenter.dao.user.UserMapper;
import com.itmuch.usercenter.domain.entity.dto.massaging.UserAddBonusMsgDTO;
import com.itmuch.usercenter.domain.entity.user.BonusEventLog;
import com.itmuch.usercenter.domain.entity.user.User;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.rocketmq.spring.annotation.RocketMQMessageListener;
import org.apache.rocketmq.spring.core.RocketMQListener;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
@Slf4j
@RocketMQMessageListener(consumerGroup = "consumer-group",topic = "add_bouns")
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@Service
public class AddBonusListener implements RocketMQListener<UserAddBonusMsgDTO> {
private final UserMapper userMapper;
private final BonusEventLogMapper bonusEventLogMapper;
@Override
public void onMessage(UserAddBonusMsgDTO userAddBonusMsgDTO) {
//业务逻辑
User user = userMapper.selectByPrimaryKey(userAddBonusMsgDTO.getUserId());
user.setBonus(user.getBonus()+userAddBonusMsgDTO.getBonus());
userMapper.updateByPrimaryKey(user);
bonusEventLogMapper.insert(BonusEventLog.builder().userId(user.getId()).event("UPDATE").createTime(new Date()).description("加积分").value(userAddBonusMsgDTO.getBonus()).build());
}
}
注意
生产者的group写在配置文件
消费者的group写在注解里