SpringBoot---RabbitMQ消息隊列_3(Routing模式、通配符模式)


Routing模式則可以指定具體的接收隊列。

1、在服務類中,編寫路由模式消息的接收代碼

@Service
public class MessageService {
//路由模式消息接收,處理error級別日志消息
@RabbitListener(bindings=@QueueBinding(value=@Queue("routing_queue_error"),
                                        exchange = @Exchange(value = "routing_exchange",
                                        type="direct"),key="error_routing_key"))
    public void routingConsumerError(String message){
        System.out.println("接收到error級別的日志消息"+message);
}
//路由模式消息接收,處理info、error、warning級別日志消息 @RabbitListener(bindings
= @QueueBinding(value = @Queue("routing_queue_all"), exchange = @Exchange(value ="routing_exchange",type = "direct"),key = {"error_routing_key", "info_routing_key","warning_routing_key"})) public void routingConsumeAll(String message){ String msg="接收到info、error、warning等級別的日志消息:"; System.out.println(msg+message); } }

2、在測試類中添加發送消息的代碼,在函數中指定接收的消息隊列。

   @Test
    public void routingPublisher(){
        rabbitTemplate.convertAndSend("routing_exchange","error_routing_key","routing send error message");
        System.out.println("消息發送成功~");
    }

3、完成測試

 

通配符模式

路由模式需要指定接收隊列的名稱,而統配模式可以認為是路由模式的擴展,支持隊列名稱的匹配模式。

1、在Service類中添加通配符模式的接收方法。

@Service
public class MessageService {
  //通配符模式消息接收,進行郵件業務訂閱處理   @RabbitListener(bindings
= @QueueBinding(value = @Queue("topic_queue_email"), exchange = @Exchange(value = "topic_exchange",type="topic"),key="info.#.email.#"))   public void topicConsumerEmail(String message){   System.out.println("接收到郵件訂閱需求處理消息:"+message);   }
  //通配符模式消息接收,進行短信業務訂閱處理 @RabbitListener(bindings
= @QueueBinding(value = @Queue("topic_queue_sms"), exchange = @Exchange(value = "topic_exchange",type="topic"),key="info.#.sms.#")) public void topicConsumerSms(String message){ System.out.println("接收到短信訂閱需求處理消息:"+message); } }

2、在測試類中添加發送消息的代碼,在函數中指定接收的消息隊列。

@Test
public void topicPublisher(){
rabbitTemplate.convertAndSend("topic_exchange","info.email.sms","topic send email and sms message");
}

3、完成測試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM