穀粒商城訊息佇列 三十九

2022-04-02 03:07:55 字數 2354 閱讀 6896

**提交到:

測試**如下:

@slf4j

@springboottest

@runwith(springrunner.class)

@autowired

amqpadmin amqpadmin;

@autowired

rabbittemplate rabbittemplate;

@test

public void sendmessagetest()

@test

public void createexchange()

@test

public void createqueue()

@test

public void createbing()

}

接受類:

@rabbitlistener(queues=)

@service("orderitemservice")

public class orderitemserviceimpl extends serviceimplimplements orderitemservice

@rabbithandler

public void recievemessage(message message,

channel channel) catch (ioexception e) }}

配置類:

/**

* @author wgr

* @create 2020/7/27 -- 13:15

*/@slf4j

@configuration

public class myrabbitconfig

/***定製rabbittemplate

* 1.服務收到訊息就**

* 1)spring.rabbitmq.publisher-confirms=true

* 2)設定確認**confirmcallback

* 2.訊息正確抵達佇列進行**

* 1)spring.rabbitmq.publisher-returns=true

* 2) spring.rabbitmq.template.mandatory=true

* 設定確認**returncallback

* 3.消費端確認(保證每個消費被正確消費,此時才可以broker刪除這個訊息)

* 1)預設是自動確認的,只要訊息接收到,客戶端會自動確認,服務端就會移除這個訊息

* 問題:

* 我們收到很多訊息,自動回覆伺服器ack,只有乙個訊息處理成功,宕機了,就會發生訊息丟失。

* 消費者手動確認模式,只要我們沒有明確告訴mq,貨物被簽收,沒有ack

* 訊息就一直是unacked狀態,即使consumer宕機。訊息不會丟失,會重新變成ready

* 2)如何簽收:

* channel.basicack(deliverytag,false);簽收獲取

* channel.basicnack(deliverytag,false,true);拒簽**/

@postconstruct //再配置類物件建立完成以後,執行這個方法

public void initrabbittemplate()else }};

rabbittemplate.setconfirmcallback(confirmcallback);

rabbittemplate.setreturncallback(new rabbittemplate.returncallback()

});}

}

傳送訊息:

穀粒商城 1

virtualbox vagrant 安裝好vagrant 後 初始化vagrant init centos 7匯入centos7 vagrant up連線centos vagrant ssh修改vagranfile檔案 config.vm.network private network ip 19...

穀粒商城 Gateway

1.建立專案gulimall gateway引入pom org.springframework.cloudgroupid spring cloud starter gatewayartifactid 2.2.3.releaseversion dependency com.alibaba.cloudg...

穀粒商城 OSS儲存

恢復內容開始 首先要理解檔案儲存。普通上傳 單機 收到請求之後會將上傳的檔案儲存到某個資料夾中。普通上傳 分布式 若有若干伺服器,將上傳的檔案儲存到某個伺服器中,如果下次負載均衡到其他伺服器,則無法找到上次儲存的檔案。所以需要將上傳的檔案統一儲存到乙個檔案系統中,可以用自建伺服器,也可以用雲儲存 阿...