|
@@ -25,7 +25,7 @@ import java.util.List;
|
|
|
*/
|
|
|
@Slf4j
|
|
|
@RabbitComponent(value = "productReceiver")
|
|
|
-public class ProductReceiver extends BaseRabbiMqHandler<ProductDTO> {
|
|
|
+public class ProductReceiver extends BaseRabbiMqHandler<List<ProductDTO>> {
|
|
|
|
|
|
@Autowired
|
|
|
private IAdwebSiteService adwebSiteService;
|
|
@@ -35,44 +35,49 @@ public class ProductReceiver extends BaseRabbiMqHandler<ProductDTO> {
|
|
|
|
|
|
@RabbitHandler
|
|
|
// ackMode需要设置为MANUAL - BaseRabbiMqHandler.onMessage()有channel.basicAck()操作
|
|
|
- @RabbitListener(queues = "site_product", ackMode = "MANUAL")
|
|
|
+ @RabbitListener(queues = "site_product_dev", ackMode = "MANUAL")
|
|
|
public void onMessage(
|
|
|
- ProductDTO productDTO,
|
|
|
+ List<ProductDTO> products,
|
|
|
Channel channel,
|
|
|
@Header(AmqpHeaders.DELIVERY_TAG) long deliveryTag) {
|
|
|
super.onMessage(
|
|
|
- productDTO,
|
|
|
+ products,
|
|
|
deliveryTag,
|
|
|
channel,
|
|
|
- new MqListener<ProductDTO>() {
|
|
|
+ new MqListener<List<ProductDTO>>() {
|
|
|
@Override
|
|
|
- public void handler(ProductDTO productDTO, Channel channel) {
|
|
|
+ public void handler(List<ProductDTO> products, Channel channel) {
|
|
|
// 业务处理
|
|
|
- log.info("收到MQ消息 {}", productDTO);
|
|
|
+ log.info("收到产品MQ消息 {}", products);
|
|
|
|
|
|
- // TODO 产品消息内容唯一性判断
|
|
|
|
|
|
- // 查看发布当前消息的站点是否是 adweb3 平台中绑定的是否是有效站点, 如果不是则直接确认消息,不做业务处理
|
|
|
- List<AdwebSite> adwebSites =
|
|
|
- adwebSiteService.list(
|
|
|
- new LambdaQueryWrapper<AdwebSite>()
|
|
|
- .like(AdwebSite::getDomain, productDTO.getSiteHost())
|
|
|
- .ne(AdwebSite::getStatus, 0));
|
|
|
+ for (ProductDTO product : products) {
|
|
|
|
|
|
- if (adwebSites.isEmpty()) {
|
|
|
- log.error(
|
|
|
- "站点:{} 不是adweb3的有效绑定站点,MQ消息确认失败",
|
|
|
- productDTO.getSiteHost());
|
|
|
- return;
|
|
|
- }
|
|
|
+ // TODO 产品消息内容唯一性判断
|
|
|
+
|
|
|
+ // 查看发布当前消息的站点是否是 adweb3 平台中绑定的是否是有效站点, 如果不是则直接确认消息,不做业务处理
|
|
|
+ List<AdwebSite> adwebSites =
|
|
|
+ adwebSiteService.list(
|
|
|
+ new LambdaQueryWrapper<AdwebSite>()
|
|
|
+ .like(AdwebSite::getDomain, product.getSiteHost())
|
|
|
+ .ne(AdwebSite::getStatus, 0));
|
|
|
+
|
|
|
+ // 一个消息中的产品所属站点相同,一条不符合,则认为全部不符合
|
|
|
+ if (adwebSites.isEmpty()) {
|
|
|
+ log.error(
|
|
|
+ "站点:{} 不是adweb3的有效绑定站点,MQ消息确认失败",
|
|
|
+ product.getSiteHost());
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
|
|
|
- try {
|
|
|
- // 产品入库
|
|
|
- adwebProductService.addProduct(
|
|
|
- productDTO, adwebSites.get(0));
|
|
|
- } catch (Exception e) {
|
|
|
- log.error("询盘入库异常:{}", e.getMessage());
|
|
|
+ try {
|
|
|
+ // 产品入库
|
|
|
+ adwebProductService.addProduct(
|
|
|
+ product, adwebSites.get(0));
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("产品:{}, 入库异常:{}", e.getMessage(), product);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
});
|