之前的配置参考https://blog.csdn.net/qq_27721169/article/details/80590587
1、配置进行修改,去掉queue配置注入
@Configuration
public class QueueConfig {
// @Bean
// public Queue queue() {
// return new ActiveMQQueue("order.queue");
// }
@Autowired
private ActiveMQConnectionFactory connectionFactory;
@Bean
public QueueProducerService queueProducerService() {
return new QueueProducerServiceImpl();
}
@Bean
public QueueConsumerService queueConsumerServiceImpl() {
return new QueueConsumerServiceImpl();
}
@Bean
public QueueConsumerService queueActPickGoldServiceImpl() {
return new QueueActPickGoldServiceImpl();
}
@Bean
public JmsMessagingTemplate jmsMessagingTemplate() {
JmsMessagingTemplate jmsMessagingTemplate = new JmsMessagingTemplate(connectionFactory);
jmsMessagingTemplate.setMessageConverter(new SimpleMessageConverter());
return jmsMessagingTemplate;
}
}
1、生产者端代码
接口
public interface QueueProducerService<T extends Serializable> {
void send(T msg, String name, long delayTime);
}
实现
public class QueueProducerServiceImpl implements QueueProducerService {
@Autowired
private JmsTemplate jmsTemplate;
@Override
public void send(Serializable msg, String destinationName, long delayTime) {
jmsTemplate.send(destinationName, session -> {
ObjectMessage objectMessage = session.createObjectMessage(msg);
if (delayTime > 0) {
objectMessage.setLongProperty(ScheduledMessage.AMQ_SCHEDULED_DELAY, delayTime);
}
return objectMessage;
});
}
}
2、消费者
接口
public interface QueueConsumerService<T extends Serializable> {
void receiveQueue(T msg);
}
实现,根据业务不同有多个
public class QueueConsumerServiceImpl implements QueueConsumerService<OrderCancel> {
@Autowired
YoupinOrderService youpinOrderService;
@Override
@JmsListener(destination = "order.queue")
public void receiveQueue(OrderCancel orderCancel) {
//业务
}
}