上一篇:?springboot整合rabbitMQ模擬簡單收發消息
https://blog.csdn.net/m0_67930426/article/details/134904766?spm=1001.2014.3001.5502
?在這篇文章的基礎上進行操作
基本思路:
1.在rabbitMQ控制臺創建一個新的隊列
2.在publisher服務中定義一個測試方法,在1秒內產生40條消息,發送到新創建的隊列
3.在consumer服務中定義兩個消息監聽者,監聽新創建的隊列
1.在rabbitMQ控制臺創建一個新的隊列
?2.在publisher服務中定義一個測試方法,在1秒內產生40條消息,發送到新創建的隊列
?
@Testvoid Test2Send() {String queueName = "work.queue";for (int i =1 ; i <= 40; i++) {String msg = "hello,message_"+i;rabbitTemplate.convertAndSend(queueName, msg);try {Thread.sleep(30);} catch (InterruptedException e) {throw new RuntimeException(e);}}}
?3.在consumer服務中定義兩個消息監聽者,監聽新創建的隊列?
@RabbitListener(queues = "work.queue")
public void ccc(String msg){System.out.println("消費者c收到了work.queue的消息:【"+msg+"】");
}@RabbitListener(queues = "work.queue")
public void ddd(String msg){System.err.println("消費者d收到了work.queue的消息:【"+msg+"】");
}
調試:
消費者消息推送限制?
默認情況下,rabbitMQ會將消息依次投遞給綁定在隊列上的每一個消費者,但這并沒有考慮到
消費者是否處理完消息,就很可能出現消息堆積現象
應對這一現象,我們可以在application.yml上設置preFetch的值為1,每次只能獲取1條消息,
處理完才能獲取下一條消息
在消費者模塊的配置文件里設置