RabbitMQ接触(二)
2019獨角獸企業重金招聘Python工程師標準>>>
上篇我們講了生產者如何創建一條message到rabbitmq-server之中,如果設置了durable,那么這條消息會持久化到磁盤,那么如果都把消息持久化到磁盤,那么消息越來越多的化,豈不是磁盤會爆滿,會導致系統崩掉??一般公司里面一些業務場景都是會設置消息持久化的(這里說的消息其實包含了exchange和隊列queue的).那么這些消息如何移除呢?
當生產者設置了確認機制ack,生產通過exchange一條持久化消息時,消費者接收隊列中的消息并處理,這時候消費者必須要手動發送確認給rabbitm-server,這時候這條消息會自動在rabbit-server中刪除.但如果沒有確認,那么這條消息會一直留在隊列,也就是消費者會一直需要處理.因此要注意的一點是持久化屬性必須要和ack一起用.
上面只是說了下公司應用rabbitmq的一些方式
接下來還是主要講spring-amqp接收消息.
CachingConnectionFactory factory=new CachingConnectionFactory();factory.setAddresses("localhost:5672");
factory.setUsername("guest");
factory.setPassword("guest");
factory.setChannelCacheSize(1);
template=new RabbitTemplate(factory);
template.setMessageConverter(new Jackson2JsonMessageConverter());
template.setQueue("qingting-queue");
首先初始化鏈接也是需要如上配置的.
配置之后,接收消息
template.receiveAndConvert()因為我們設置了json轉換器,因此使用改方法接收并直接轉換為對象,當然我們也可以使用receive來接收.
但是要注意的是這個接收必須手動調用方法才能接收到消息,因此,我們可以直接
? ?Object object=template.receiveAndConvert()
}
這時候我們就可以實時收到消息了.當然我們也可以使用線程去處理.
轉載于:https://my.oschina.net/kittyMan/blog/386947
總結
以上是生活随笔為你收集整理的RabbitMQ接触(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle中比较日期大小
- 下一篇: 敏捷个人新体系学习 - 2.定位