使用Spring和AMQP傳送接收訊息(中)

2021-07-30 10:26:48 字數 1618 閱讀 7722

上篇講了rabbitmq連線工廠的作用是用來建立rabbitmq連線,本篇就來講講rabbitmq的傳送訊息。通過rabbitmq傳送訊息最簡單的方式就是將connectionfactory bean注入到服務層類中,並使用它建立connection,使用這個connection來建立channel,再使用這個channel發布訊息到exchange中。

當然spring amqp提供了rabbittemplate來簡便我們的操作,消除rabbitmq傳送和接收訊息相關的樣板**。使用rabbittemplate也是先在配置檔案中寫相關的配置,使用rabbit命名空間的元素,如下:

id="rabbittemplate"

connection-factory="connectionfactory">

現在要傳送訊息只需要將模板bean注入到服務層類中(這裡以sendserviceimpl為例),並使用它來傳送spittle,使用rabbittemplate來傳送spittle提醒,**如下:

public

class

sendserviceimpl

implements

sendservice

public

void

sendspittle (spittle spittle)

}

上面**中sendspittle()呼叫rabbittemplate的convertandsend()方法,傳入的三個引數分別是exchange的名稱、routing key以及要傳送的物件。

這裡如果使用最簡單的只傳要傳送的物件的過載方法,rabbittemplate就使用預設的exchange和routing key。按之前配置的話,這兩項預設都為空,也可以自行在元素上借助exchange和routing-key屬性配置不同的預設值:

"rabbittemplate" connection-factory

="connectionfactory"

exchange=

"spittle.test.exchange"

routing-key

="spittle.test"

/>

此外rabbittemplate還有其他方法可以用來傳送訊息,比如用send()方法來傳送org.springframework.amqp.core.message物件,如下所示:

message

message = new message("hello world".getbytes(), new messageproperties());

rabbit.send("hello.exchange", "hello.routing", message);

使用send()方法的技巧在於構造要傳送的message物件,在上面的例子中,通過給定字串的位元組陣列來構建message例項。這裡是字串相對比較簡單,如果訊息是複雜物件的話,則會比較複雜。也是因為這樣,所以一般會用convertandsend()方法,它會自動將物件轉換為message,不過它需要乙個訊息轉換器來幫助完成該任務,預設的轉換器是******messageconverter,它適用於string、serializable例項和位元組陣列。

使用spring傳送郵件

最近想做乙個 註冊那部分想做成將密碼資訊傳送到客戶郵件中的那種,隨即翻了翻資料做了個例子 建立乙個配置檔案bean.xml,內容如下 tp驗證 true f9inux gmail.com flatfish93 163.com hello ghjgjhghghghgjhgjgjhgj 上面那一部分寫的...

Spring使用Velocity傳送Email

class org.apache.velocity.runtime.resource.loader.classpathresourceloader utf 8 utf 8 text html charset utf 8 email email new email email.setsubject 郵...

spring 傳送郵件

b spring mail 傳送郵件 b b 一 新增mail jar 包 b b 二 在web inf 下,建立檔案mail.properties,填寫下面的東西 b mail.host 伺服器 mail.username 使用者名稱 mail.password 密碼 mail.smtp.auth...