需要的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">