合作机构:阿里云 / 腾讯云 / 亚马逊云 / DreamHost / NameSilo / INWX / GODADDY / 百度统计
微服务开发中经常会使用消息队列进行跨服务通信。在一个典型场景中,服务A执行一个业务逻辑,需要保存数据库,然后通知服务B执行相应的业务逻辑。在这种场景下,我们需要考虑如何发送消息。
图片
首先,我们可能会考虑将数据库操作和消息发送放在同一个事务中,以下是伪代码示例:
@Transactional
public void saveWithMessage(BusinessDO businessDO){
String id = IdUtils.nextId();
businessDO.setId(id);
xxxRepository.save(businessDO);
BusinessMessage businessMessage = new BusinessMessage();
businessMessage.setKey(id);
SendResult send = rocketMQTemplate.syncSend("test-topic", sendMessage);
}
TOP