7 changed files with 264 additions and 19 deletions
@ -0,0 +1,16 @@ |
|||
package cn.nla.common.model; |
|||
|
|||
import lombok.Data; |
|||
|
|||
@Data |
|||
public class OrderMessage { |
|||
/** |
|||
* 消息id |
|||
*/ |
|||
private Long messageId; |
|||
/** |
|||
* 订单号 |
|||
*/ |
|||
private String outTradeNo; |
|||
|
|||
} |
@ -0,0 +1,103 @@ |
|||
package cn.nla.order.config; |
|||
|
|||
import lombok.Data; |
|||
import org.springframework.amqp.core.Binding; |
|||
import org.springframework.amqp.core.Exchange; |
|||
import org.springframework.amqp.core.Queue; |
|||
import org.springframework.amqp.core.TopicExchange; |
|||
import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter; |
|||
import org.springframework.amqp.support.converter.MessageConverter; |
|||
import org.springframework.beans.factory.annotation.Value; |
|||
import org.springframework.context.annotation.Bean; |
|||
import org.springframework.context.annotation.Configuration; |
|||
|
|||
import java.util.HashMap; |
|||
import java.util.Map; |
|||
|
|||
@Configuration |
|||
@Data |
|||
public class RabbitMQConfig { |
|||
/** |
|||
* 交换机 |
|||
*/ |
|||
@Value("${mq.config.order_event_exchange}") |
|||
private String eventExchange; |
|||
/** |
|||
* 延迟队列 |
|||
*/ |
|||
@Value("${mq.config.order_close_delay_queue}") |
|||
private String orderCloseDelayQueue; |
|||
/** |
|||
* 关单队列 |
|||
*/ |
|||
@Value("${mq.config.order_close_queue}") |
|||
private String orderCloseQueue; |
|||
/** |
|||
* 进入延迟队列的路由key |
|||
*/ |
|||
@Value("${mq.config.order_close_delay_routing_key}") |
|||
private String orderCloseDelayRoutingKey; |
|||
/** |
|||
* 进入死信队列的路由key |
|||
*/ |
|||
@Value("${mq.config.order_close_routing_key}") |
|||
private String orderCloseRoutingKey; |
|||
/** |
|||
* 过期时间 |
|||
*/ |
|||
@Value("${mq.config.ttl}") |
|||
private Integer ttl; |
|||
|
|||
/** |
|||
* 消息转换器 |
|||
* @return |
|||
*/ |
|||
@Bean |
|||
public MessageConverter messageConverter(){ |
|||
return new Jackson2JsonMessageConverter(); |
|||
} |
|||
/** |
|||
* 创建交换机 Topic类型,也可以用dirct路由 |
|||
* 一般一个微服务一个交换机 |
|||
* @return |
|||
*/ |
|||
@Bean |
|||
public Exchange orderEventExchange(){ |
|||
return new TopicExchange(eventExchange,true,false); |
|||
} |
|||
/** |
|||
* 延迟队列 |
|||
*/ |
|||
@Bean |
|||
public Queue orderCloseDelayQueue(){ |
|||
Map<String,Object> args = new HashMap<>(3); |
|||
args.put("x-dead-letter-exchange",eventExchange); |
|||
args.put("x-dead-letter-routing-key",orderCloseRoutingKey); |
|||
args.put("x-message-ttl",ttl); |
|||
return new Queue(orderCloseDelayQueue,true,false,false,args); |
|||
} |
|||
/** |
|||
* 死信队列,普通队列,用于被监听 |
|||
*/ |
|||
@Bean |
|||
public Queue orderCloseQueue(){ |
|||
return new Queue(orderCloseQueue,true,false,false); |
|||
} |
|||
/** |
|||
* 第一个队列,即延迟队列的绑定关系建立 |
|||
* @return |
|||
*/ |
|||
@Bean |
|||
public Binding orderCloseDelayBinding(){ |
|||
return new Binding(orderCloseDelayQueue,Binding.DestinationType.QUEUE,eventExchange,orderCloseDelayRoutingKey,null); |
|||
} |
|||
/** |
|||
* 死信队列绑定关系建立 |
|||
* @return |
|||
*/ |
|||
@Bean |
|||
public Binding orderCloseBinding(){ |
|||
return new Binding(orderCloseQueue,Binding.DestinationType.QUEUE,eventExchange,orderCloseRoutingKey,null); |
|||
} |
|||
|
|||
} |
Loading…
Reference in new issue