Commit 10925dc8 authored by 周健威's avatar 周健威

添加队列代码

parent 2ba0282e
...@@ -91,13 +91,13 @@ ...@@ -91,13 +91,13 @@
<dependency> <dependency>
<groupId>tk.mybatis</groupId> <groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId> <artifactId>mapper-spring-boot-starter</artifactId>
<version>1.1.2</version> <version>2.1.5</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.github.pagehelper</groupId> <groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId> <artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version> <version>1.2.10</version>
</dependency> </dependency>
<dependency> <dependency>
......
...@@ -15,7 +15,7 @@ spring: ...@@ -15,7 +15,7 @@ spring:
config: config:
server-addr: 127.0.0.1:8848 server-addr: 127.0.0.1:8848
#共用配置,暂定一个 #共用配置,暂定一个
#shared-dataids: common-dev.yaml shared-dataids: common-dev.yaml
--- ---
spring: spring:
profiles: pro profiles: pro
......
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
<dependency> <dependency>
<groupId>tk.mybatis</groupId> <groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId> <artifactId>mapper</artifactId>
<version>3.4.0</version> <version>4.1.5</version>
</dependency> </dependency>
<!-- <dependency> <!-- <dependency>
<groupId>org.springframework</groupId> <groupId>org.springframework</groupId>
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
<dependency> <dependency>
<groupId>com.github.pagehelper</groupId> <groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId> <artifactId>pagehelper</artifactId>
<version>5.0.3</version> <version>5.1.8</version>
</dependency> </dependency>
<!-- <dependency> <!-- <dependency>
......
...@@ -74,16 +74,15 @@ public abstract class BaseBiz<M extends Mapper<T>, T> { ...@@ -74,16 +74,15 @@ public abstract class BaseBiz<M extends Mapper<T>, T> {
} }
public void updateById(T entity) { public int updateById(T entity) {
EntityUtils.setUpdatedInfo(entity); EntityUtils.setUpdatedInfo(entity);
mapper.updateByPrimaryKey(entity); return mapper.updateByPrimaryKey(entity);
} }
public void updateSelectiveById(T entity) { public int updateSelectiveById(T entity) {
EntityUtils.setUpdatedInfo(entity); EntityUtils.setUpdatedInfo(entity);
mapper.updateByPrimaryKeySelective(entity); return mapper.updateByPrimaryKeySelective(entity);
} }
public List<T> selectByExample(Object example) { public List<T> selectByExample(Object example) {
......
package com.github.wxiaoqi.security.common.mapper;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import tk.mybatis.mapper.common.Mapper;
public interface VersionMapper<T> extends Mapper<T> {
default int deleteWithVersion(T t) {
int result = delete(t);
if(result == 0) {
throw new BaseException(ResultCode.DB_OPERATION_FAIL_CODE);
}
return result;
}
default int updateByPrimaryKeyWithVersion(T t){
int result = updateByPrimaryKey(t);
if(result == 0) {
throw new BaseException(ResultCode.DB_OPERATION_FAIL_CODE);
}
return result;
}
}
...@@ -21,6 +21,8 @@ public class ResultCode { ...@@ -21,6 +21,8 @@ public class ResultCode {
public static int RSTOKEN_EXPIRED_CODE = Integer.valueOf(SystemProperty.getResultConfig("RSTOKEN_EXPIRED_CODE")); public static int RSTOKEN_EXPIRED_CODE = Integer.valueOf(SystemProperty.getResultConfig("RSTOKEN_EXPIRED_CODE"));
// rstoken不合法 // rstoken不合法
public static int RSTOKEN_NULL_CODE = Integer.valueOf(SystemProperty.getResultConfig("RSTOKEN_NULL_CODE")); public static int RSTOKEN_NULL_CODE = Integer.valueOf(SystemProperty.getResultConfig("RSTOKEN_NULL_CODE"));
// 数据库操作失败
public static int DB_OPERATION_FAIL_CODE = Integer.valueOf(SystemProperty.getResultConfig("DB_OPERATION_FAIL_CODE"));
// 请求微信接口错误 // 请求微信接口错误
public static int WXAPI_CODE = Integer.valueOf(SystemProperty.getResultConfig("WXAPI_CODE")); public static int WXAPI_CODE = Integer.valueOf(SystemProperty.getResultConfig("WXAPI_CODE"));
// 微信用户不存在 // 微信用户不存在
......
...@@ -27,6 +27,11 @@ RSTOKEN_EXPIRED_CODE=1006 ...@@ -27,6 +27,11 @@ RSTOKEN_EXPIRED_CODE=1006
#rstoken为空 #rstoken为空
RSTOKEN_NULL_CODE=1007 RSTOKEN_NULL_CODE=1007
1007=rstoken为空 1007=rstoken为空
#数据库操作失败
DB_OPERATION_FAIL_CODE=1008
1008=数据库操作失败
#请求微信接口失败 #请求微信接口失败
WXAPI_CODE=2001 WXAPI_CODE=2001
#微信用不不存在 #微信用不不存在
......
...@@ -19,6 +19,11 @@ import java.util.List; ...@@ -19,6 +19,11 @@ import java.util.List;
*/ */
@FeignClient(value = "ace-admin") @FeignClient(value = "ace-admin")
public interface UserFeign { public interface UserFeign {
public static final int MEMBER_DAYS_LOCK = 1;
public static final int MEMBER_DAYS_CONFIRM = 2;
public static final int MEMBER_DAYS_WITHDRAW = 3;
@RequestMapping(value = "/public/userinfo-by-token") @RequestMapping(value = "/public/userinfo-by-token")
public ObjectRestResponse<UserDTO> userinfoByToken(@RequestParam("token") String token); public ObjectRestResponse<UserDTO> userinfoByToken(@RequestParam("token") String token);
...@@ -71,7 +76,7 @@ public interface UserFeign { ...@@ -71,7 +76,7 @@ public interface UserFeign {
* @throws Exception * @throws Exception
*/ */
@RequestMapping(value = "/member/user/buyMember", method = RequestMethod.POST) @RequestMapping(value = "/member/user/buyMember", method = RequestMethod.POST)
public ObjectRestResponse buyMember(@RequestBody UserMemberDTO userMemberDTO) throws Exception; public ObjectRestResponse buyMember(@RequestBody UserMemberDTO userMemberDTO);
/** /**
* 订单更改会员 * 订单更改会员
...@@ -86,7 +91,7 @@ public interface UserFeign { ...@@ -86,7 +91,7 @@ public interface UserFeign {
@RequestParam(value = "userId",defaultValue = "0")Integer userId, @RequestParam(value = "userId",defaultValue = "0")Integer userId,
@RequestParam(value = "days",defaultValue = "0")Integer days, @RequestParam(value = "days",defaultValue = "0")Integer days,
@RequestParam(value = "type",defaultValue = "1")Integer type @RequestParam(value = "type",defaultValue = "1")Integer type
) throws Exception; );
} }
...@@ -24,10 +24,10 @@ ...@@ -24,10 +24,10 @@
</targetResourcesProject> </targetResourcesProject>
<targetXMLPackage>mapper</targetXMLPackage> <targetXMLPackage>mapper</targetXMLPackage>
<!-- 依赖版本 --> <!-- 依赖版本 -->
<mapper.version>3.4.0</mapper.version> <mapper.version>4.1.5</mapper.version>
<mybatis.version>3.3.1</mybatis.version> <mybatis.version>3.4.6</mybatis.version>
<mybatis.spring.version>1.2.4</mybatis.spring.version> <mybatis.spring.version>1.3.2</mybatis.spring.version>
<pagehelper.version>4.1.1</pagehelper.version> <pagehelper.version>5.1.8</pagehelper.version>
</properties> </properties>
<dependencies> <dependencies>
<dependency> <dependency>
...@@ -139,13 +139,13 @@ ...@@ -139,13 +139,13 @@
<dependency> <dependency>
<groupId>tk.mybatis</groupId> <groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId> <artifactId>mapper-spring-boot-starter</artifactId>
<version>1.1.2</version> <version>2.1.5</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.github.pagehelper</groupId> <groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId> <artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version> <version>1.2.10</version>
</dependency> </dependency>
<!-- swagger --> <!-- swagger -->
......
...@@ -17,7 +17,7 @@ spring: ...@@ -17,7 +17,7 @@ spring:
config: config:
server-addr: 127.0.0.1:8848 server-addr: 127.0.0.1:8848
#共用配置,暂定一个 #共用配置,暂定一个
#shared-dataids: common-dev.yaml shared-dataids: common-dev.yaml
--- ---
spring: spring:
......
...@@ -25,12 +25,12 @@ ...@@ -25,12 +25,12 @@
<groupId>com.github.wxiaoqi</groupId> <groupId>com.github.wxiaoqi</groupId>
<artifactId>ace-common</artifactId> <artifactId>ace-common</artifactId>
<version>2.0-SNAPSHOT</version> <version>2.0-SNAPSHOT</version>
<exclusions> <!-- <exclusions>-->
<exclusion> <!-- <exclusion>-->
<groupId>tk.mybatis</groupId> <!-- <groupId>tk.mybatis</groupId>-->
<artifactId>mapper</artifactId> <!-- <artifactId>mapper</artifactId>-->
</exclusion> <!-- </exclusion>-->
</exclusions> <!-- </exclusions>-->
</dependency> </dependency>
<dependency> <dependency>
<groupId>javax.persistence</groupId> <groupId>javax.persistence</groupId>
......
...@@ -203,4 +203,10 @@ public class BaseOrder implements Serializable { ...@@ -203,4 +203,10 @@ public class BaseOrder implements Serializable {
@ApiModelProperty(value = "是否已支付") @ApiModelProperty(value = "是否已支付")
private Integer hasPay; private Integer hasPay;
/**
* 乐观锁,修改版本号
*/
@Version
@ApiModelProperty(value = "乐观锁,修改版本号")
private Integer version;
} }
...@@ -33,6 +33,11 @@ ...@@ -33,6 +33,11 @@
<version>2.0.2</version> <version>2.0.2</version>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -87,6 +87,10 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -87,6 +87,10 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
}}); }});
} }
/**
* 取消订单
* @param baseOrder
*/
public void cancel(BaseOrder baseOrder) { public void cancel(BaseOrder baseOrder) {
if(cancelAble.get(baseOrder.getType()).contains(baseOrder.getStatus())) { if(cancelAble.get(baseOrder.getType()).contains(baseOrder.getStatus())) {
this.updateSelectiveById(new BaseOrder(){{ this.updateSelectiveById(new BaseOrder(){{
...@@ -138,7 +142,18 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -138,7 +142,18 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
//处理取消流程 //处理取消流程
if(OrderTypeEnum.RentVehicle.getCode().equals(baseOrder.getType())) { if(OrderTypeEnum.RentVehicle.getCode().equals(baseOrder.getType())) {
OrderRentVehicleDetail orvd = orderRentVehicleBiz.selectOne(new OrderRentVehicleDetail(){{
setOrderId(baseOrder.getId());
}});
//取消租车预定 //取消租车预定
//取消租车免费天数使用
if(null != orvd.getFreeDays() && orvd.getFreeDays() > 0) {
int result = userFeign.memberDays(baseOrder.getUserId(), orvd.getFreeDays(), UserFeign.MEMBER_DAYS_WITHDRAW);
if(result < 0) {
throw new BaseException(ResultCode.FAILED_CODE);
}
}
}else if(OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) { }else if(OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) {
OrderTourDetail otd = orderTourDetailBiz.selectOne(new OrderTourDetail(){{ OrderTourDetail otd = orderTourDetailBiz.selectOne(new OrderTourDetail(){{
...@@ -153,6 +168,11 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -153,6 +168,11 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
} }
} }
/**
* 支付回调处理
* @param orderNo
* @param tradeNo
*/
public void payNotifyHandle(String orderNo, String tradeNo) { public void payNotifyHandle(String orderNo, String tradeNo) {
BaseOrder baseOrder = this.selectOne(new BaseOrder() {{ BaseOrder baseOrder = this.selectOne(new BaseOrder() {{
setNo(orderNo); setNo(orderNo);
...@@ -173,21 +193,27 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> { ...@@ -173,21 +193,27 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper,BaseOrder> {
OrderMemberDetail omd = orderMemberDetailBiz.selectOne(new OrderMemberDetail(){{ OrderMemberDetail omd = orderMemberDetailBiz.selectOne(new OrderMemberDetail(){{
setOrderId(baseOrder.getId()); setOrderId(baseOrder.getId());
}}); }});
try {
userFeign.buyMember(new UserMemberDTO() {{ //触发会员效益
setUserId(baseOrder.getUserId()); userFeign.buyMember(new UserMemberDTO() {{
setDiscount(omd.getRebate()); setUserId(baseOrder.getUserId());
setIsBind(ISBIND_BIND); setDiscount(omd.getRebate());
setMemberLevel(omd.getMemberLevel()); setIsBind(ISBIND_BIND);
setRentFreeDays(omd.getRentFreeNum()); setMemberLevel(omd.getMemberLevel());
}}); setRentFreeDays(omd.getRentFreeNum());
}catch (Exception e){ }});
log.error(e.getMessage(), e);
}
}else if(OrderTypeEnum.RentVehicle.getCode().equals(baseOrder.getType())) { }else if(OrderTypeEnum.RentVehicle.getCode().equals(baseOrder.getType())) {
updateOrder.setStatus(OrderStatusEnum.ORDER_TOSTART.getCode()); updateOrder.setStatus(OrderStatusEnum.ORDER_TOSTART.getCode());
OrderRentVehicleDetail orvd = orderRentVehicleBiz.selectOne(new OrderRentVehicleDetail(){{
setOrderId(baseOrder.getId());
}});
//车辆预定审核通过 //车辆预定审核通过
//确认免费天数
if(orvd.getFreeDays() > 0) {
userFeign.memberDays(baseOrder.getUserId(), orvd.getFreeDays(), UserFeign.MEMBER_DAYS_CONFIRM);
}
}else if(OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) { }else if(OrderTypeEnum.TOUR.getCode().equals(baseOrder.getType())) {
updateOrder.setStatus(OrderStatusEnum.ORDER_TOSTART.getCode()); updateOrder.setStatus(OrderStatusEnum.ORDER_TOSTART.getCode());
//暂无处理 //暂无处理
......
package com.xxfc.platform.order.config;
import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.CustomExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.HashMap;
import java.util.Map;
/**
* rabbitmq配置类
* 过期订单取消延时队列
* @author zhanghang
* @date 2019/1/7
*/
@Configuration
public class RabbitUserConfig {
/**
* 延时队列交换机
* 注意这里的交换机类型:CustomExchange
* @return
*/
@Bean
public CustomExchange delayExchange(){
Map<String, Object> args = new HashMap<>();
args.put("x-delayed-type", "direct");
return new CustomExchange("delay_exchange","x-delayed-message",true, false,args);
}
/**
* 延时队列
* @return
*/
@Bean
public Queue delayQueue(){
return new Queue("delay_queue",true);
}
/**
* 给延时队列绑定交换机
* @return
*/
@Bean
public Binding cfgDelayBinding(Queue cfgDelayQueue, CustomExchange cfgUserDelayExchange){
return BindingBuilder.bind(cfgDelayQueue).to(cfgUserDelayExchange).with("delay_key").noargs();
}
}
...@@ -3,9 +3,12 @@ package com.xxfc.platform.order.service; ...@@ -3,9 +3,12 @@ package com.xxfc.platform.order.service;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.lang.Dict; import cn.hutool.core.lang.Dict;
import com.github.wxiaoqi.security.admin.constant.enumerate.MemberEnum; import com.github.wxiaoqi.security.admin.constant.enumerate.MemberEnum;
import com.github.wxiaoqi.security.admin.feign.UserFeign;
import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO; import com.github.wxiaoqi.security.admin.feign.dto.AppUserDTO;
import com.github.wxiaoqi.security.common.context.BaseContextHandler; import com.github.wxiaoqi.security.common.context.BaseContextHandler;
import com.github.wxiaoqi.security.common.exception.BaseException;
import com.github.wxiaoqi.security.common.msg.ObjectRestResponse; import com.github.wxiaoqi.security.common.msg.ObjectRestResponse;
import com.github.wxiaoqi.security.common.util.process.ResultCode;
import com.xxfc.platform.order.biz.OrderCostDetailBiz; import com.xxfc.platform.order.biz.OrderCostDetailBiz;
import com.xxfc.platform.order.biz.OrderRentVehicleBiz; import com.xxfc.platform.order.biz.OrderRentVehicleBiz;
import com.xxfc.platform.order.biz.OrderTemplateBiz; import com.xxfc.platform.order.biz.OrderTemplateBiz;
...@@ -51,6 +54,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -51,6 +54,9 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
@Autowired @Autowired
OrderTemplateBiz orderTemplateBiz; OrderTemplateBiz orderTemplateBiz;
@Autowired
UserFeign userFeign;
@PostConstruct @PostConstruct
public void init(){ public void init(){
this.orderTypeEnum = OrderTypeEnum.RentVehicle; this.orderTypeEnum = OrderTypeEnum.RentVehicle;
...@@ -75,6 +81,14 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl ...@@ -75,6 +81,14 @@ public class OrderRentVehicleService extends AbstractOrderHandle<OrderRentVehicl
//设置订单名称 //设置订单名称
bo.getOrder().setName(bo.getVehicleModel().getName()); bo.getOrder().setName(bo.getVehicleModel().getName());
//扣减免费天数
if(null != bo.getFreeDays() && bo.getFreeDays() > 0) {
int result = userFeign.memberDays(bo.getAppUserDTO().getUserid(), bo.getFreeDays(), UserFeign.MEMBER_DAYS_LOCK);
if(result < 0) {
throw new BaseException(ResultCode.FAILED_CODE);
}
}
super.handleDetail(bo); super.handleDetail(bo);
} }
......
package com.xxfc.platform.order;
import cn.hutool.extra.template.Template;
import cn.hutool.extra.template.TemplateConfig;
import cn.hutool.extra.template.TemplateEngine;
import cn.hutool.extra.template.TemplateUtil;
import com.xxfc.platform.order.biz.BaseOrderBiz;
import com.xxfc.platform.order.entity.BaseOrder;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.util.HashMap;
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={OrderApplication.class})
public class OrderTest {
@Autowired
BaseOrderBiz baseOrderBiz;
@Test
public void test() {
BaseOrder baseOrder =baseOrderBiz.selectById(93);
baseOrder.setRefundTime(System.currentTimeMillis());
baseOrder.setVersion(baseOrder.getVersion() - 1);
baseOrderBiz.updateSelectiveById(baseOrder);
log.info("success");
}
}
package com.xxfc.platform.order;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeoutException;
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={OrderApplication.class})
public class RabbitmqTest {
static final String exchangeName = "test_exchange";
static final String queueName = "test_queue";
static final String routingKey = "test_queue";
@Test
public void test() throws IOException, TimeoutException {
//建立连接,创建通道
ConnectionFactory fc = new ConnectionFactory();
fc.setHost("10.5.52.3");
fc.setPort(5672);
fc.setUsername("guest");
fc.setPassword("guest");
fc.setVirtualHost("my_vhost");
Connection conn = fc.newConnection();
Channel channel = conn.createChannel();
channel.exchangeDelete(exchangeName); //删除路由
Map<String, Object> map = new HashMap<>();
map.put("x-delayed-type", "direct");
channel.exchangeDeclare(exchangeName, "x-delayed-message",false, false,map); //创建路由
channel.queueDelete(queueName); //删除队列
channel.queueDeclare(queueName, true, false, false, null); //创建队列
channel.queueBind(queueName, exchangeName, routingKey); //绑定路由、队列
channel.close();
conn.close();
// String msg = "测试延时de消息|"+ LocalDateTime.now();
//
// rabbitTemplate.convertAndSend(exchangeName, routingKey, msg, (message) ->{
// message.getMessageProperties().setHeader("x-delay", 9000); //延迟9秒
// return message;
// });
}
}
package com.xxfc.platform.order;
import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeoutException;
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={OrderApplication.class})
public class RabbitmqTest2 {
@Autowired
private RabbitTemplate rabbitTemplate;
@Test
public void test() throws IOException, TimeoutException {
List<Integer> list = new ArrayList<Integer>(){{
add(1);add(2);add(3);add(4);add(5);add(6);
}};
//这里的消息可以是任意对象,无需额外配置,直接传即可
log.info("===============延时队列生产消息====================");
log.info("发送时间:{},发送内容:{}", LocalDateTime.now(), list.toString());
rabbitTemplate.setMessageConverter(new Jackson2JsonMessageConverter());
rabbitTemplate.convertAndSend(
"test_exchange",
"test_queue",
list,
message -> {
//注意这里时间可以使long,而且是设置header
message.getMessageProperties().setHeader("x-delay",60000);
return message;
}
);
log.info("{}ms后执行", 60000);
}
}
package com.xxfc.platform.order;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.context.annotation.Bean;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import java.io.IOException;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeoutException;
@Slf4j
@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes={OrderApplication.class})
public class RabbitmqTest3 {
@Autowired
private RabbitTemplate rabbitTemplate;
// @Bean
// @RabbitListener(queues = "delay_queue")
// public
@Test
public void test() throws IOException, TimeoutException {
;
}
}
...@@ -4,9 +4,11 @@ import cn.hutool.extra.template.Template; ...@@ -4,9 +4,11 @@ import cn.hutool.extra.template.Template;
import cn.hutool.extra.template.TemplateConfig; import cn.hutool.extra.template.TemplateConfig;
import cn.hutool.extra.template.TemplateEngine; import cn.hutool.extra.template.TemplateEngine;
import cn.hutool.extra.template.TemplateUtil; import cn.hutool.extra.template.TemplateUtil;
import com.xxfc.platform.order.biz.BaseOrderBiz;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
...@@ -18,6 +20,8 @@ import java.util.HashMap; ...@@ -18,6 +20,8 @@ import java.util.HashMap;
public class RegionTest { public class RegionTest {
// @Autowired
// BaseOrderBiz baseOrderBiz;
@Test @Test
public void test() { public void test() {
...@@ -49,6 +53,9 @@ public class RegionTest { ...@@ -49,6 +53,9 @@ public class RegionTest {
// .driverAmount(new BigDecimal("1800")) // .driverAmount(new BigDecimal("1800"))
// .deposit(new BigDecimal("20000")).build() // .deposit(new BigDecimal("20000")).build()
//输出:Hello Hutool //输出:Hello Hutool
log.info(result); log.info(result);
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment