问题:生产MQ的CPU使用率过高
原因:公司后台用的是Spring架构,以为把createProducer()写入context上下文,实例会随着Spring容器关闭销毁。没想到Spring只销毁Bean实例,手动创建的不可以销毁。搬了阿里云文档示例,就是没有close导致的
import java.util.Properties;
import com.alipay.sofa.sofamq.client.PropertyKeyConst;
import io.openmessaging.api.OMS;
import io.openmessaging.api.Producer;
import io.openmessaging.api.SendResult;
public class SomeClass {
public static void main(String[] args) {
Properties properties = new Properties();
properties.setProperty(PropertyKeyConst.GROUP_ID, "GID_XXX");
Producer producer = OMS.builder().driver("sofamq").endpoint("$END_POINT")
.build().createProducer(properties);
producer.start();
String msgBody = "Message Body";
Message message = new Message("YOUR_TOPIC","$YOUR_TAGS", msgBody.getBytes());
SendResult sendResult = producer.send(message);
System.out.println(sendResult);
}
}
解决方案:消费者消费后手动关闭,调用producer.close()