ActiveMQ實現延遲隊列,JmsMessagingTemplate 實現方式

需要的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">
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章