需要的maven。
<!--MQ--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> <!--消息队列连接池--> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool</artifactId> <version>${version-activemq-pool}</version> </dependency>
创建一个队列
@Configuration public class ActiveMQProducerConfig { ///=======队列相关代码========= /** * 创建一个和前端交互的队列 一对一 * @return */ @Bean public Queue webQueue(){ return new ActiveMQQueue(MqMsgEnum.QUEUE_WEB.getCode()); }
关键代码,发送这里的。
@Service public class ProducerQueueService { @Autowired private Queue defaultQueue; @Autowired private Queue webQueue; /** * jms消息模板 */ @Autowired private JmsMessagingTemplate jmsMessagingTemplate; /** * 发送延迟消息队列 * @param msg 发送的信息 */ public void sendDelayQueueMsg(String msg){ Map<String, Object> headers = new HashMap<>(); //发送延迟队列,延迟10秒,单位毫秒 headers.put(ScheduledMessage.AMQ_SCHEDULED_DELAY, 10000); jmsMessagingTemplate.convertAndSend(webQueue, msg, headers); System.out.println("发送了延迟队列!"); } }
消费端的和普通的一样。
注意,还要开启mq相关的配置。
发送延时消息需要修改 ActiveMQ 安装目录下的 conf/activemq.xml
文件。
打开 activemq.xml 文件,找到 <broker>
标签,在 <broker>
标签里面增加一个属性 schedulerSupport="true"
。如下所示:
<broker xmlns="http://activemq.apache.org/schema/core" brokerName="localhost" dataDirectory="${activemq.data}" schedulerSupport="true">