目標是可以接收 RabbitMQ 的資料,然後印出該資料。這樣子就是需要 RabbitMQ 監聽器!
建立新的 Spring 專案
Java Version 選 8,按 Next:
引用 dependency(附屬、依賴的東西),因為我們的目標是「接收 RabbitMQ 的資料,然後打到 Elasticsearch」,所以選擇「Spring for RabbitMQ」以及「Spring Data Elasticsearch」,按 Next:
按 Finish:
建立完成之後,在 STS 的最左邊會有 demo 的資料夾:
重要的檔案有:
- pom.xml 檔
- src/main/java 中的 java 檔案
- src/main/resources 中的 application.properties 檔案
pom.xml 檔案
pom.xml 就是 Maven 引用的檔案。剛剛引用了 RabbitMQ 跟 Elasticsearch,就可以在裡面找到對應的 dependency,例如「spring-boot-starter-amqp」、「spring-boot-starter-data-elasticsearch」,以及 spring boot 的一些測試用的東西:
DemoApplication.java 檔案
自動建立與專案名稱一樣的 application:
application.properties 檔案
所有的數據連線的設定檔,都是寫在這裡。例如連 RabbitMQ:
建立 RabbitMQ 監聽器 listener
在 src/main/java 按右鍵新增 Java Class:
建立好了之後會出現 RabbitMQListener.java 的空白檔案:
填入監聽器需要的 code:
其中「TEST2」是 RabbitMQ 的目標 queue 的名字,建立了名叫「receivedMessage」的方法,單純印出來而已,名字可以自己取名。
Message 是 Spring Boot 裡面的一個物件,可以做很多事情,例如將 message 轉型別 .toString()。
到 RabbitMQ 的 web 介面上看,會看到 queue TEST2 有 1 筆資料在那裡:
還可以在 print 後面加入下面這段把 message 轉成 map 的 code,可加可不加,就只是看想要對 message 做什麼而已:
這樣子監聽器就完成了。
接下來就是學「如何整理資料,把資料整理成想要打進 Elasticsearch 的樣子」。
解決紅色底線的問題
如果有紅色底線,可以到左邊 demo 專案點右鍵選擇「Properties > Java Build Path > Libraries」檢查,這次的解決方法是設定「JRE System Library」,並且使用 open source 的 JDK(Java 開發的套件):
安裝 Open Source 的 JDK
關鍵字是「AdoptOpenJDK」。到官網 adoptopenjdk.net 下載安裝,下圖是 Windows 的畫面:
不能再用一般的 Oracle Java SE 了,因為開始要收錢了。
要到 STS 去指定剛剛安裝好的 jdk hotspot。
執行 RabbitMQ 監聽器 listener
在 demo 專案按右鍵 Run As > Spring Boot App 即可執行。成功就可以看到印出「Received Message from RabbitMQ: (Body:’{“name”:”Pistol”,”title”:”hello”}’ MessageProperties…」的紅字。
實際上的 message 內容應該就是在 Body 裡面的「{“name”:”Pistol”,”title”:”hello”}」。
可以在 RabbitMQ 看到 TEST2 queue 原本有 1 筆資料,現在 0 筆了!因為被我的監聽器拿走了~
完成~~~:D