上篇講了使用RabbitMQ發送訊息,本篇則來講接收訊息。
在傳統JMS中有兩種從佇列取得資訊的方式,使用JmsTemplate的同步方式以及使用訊息驅動pojo的非同步方式。 Spring AMQP也提供了類似的方式來獲取透過AMQP發送的訊息。
使用RabbitTemplate來接收訊息
RabbitTemplate提供的接收資訊的方法中最簡單的就是receive()方法,透過該方法就可以從佇列中取得一個Message物件:
Message message = rabbit.receive("spittle.test.queue");
或也可以透過設定來取得訊息的預設佇列,這是透過在設定範本的時候,設定queue屬性實現的:
<template></template>
這樣的話,在呼叫receive()方法時,不需要設定任何參數就能從預設佇列中取得訊息:
Message message = rabbit.receive( );
#取得Message物件後,一般需要將它的body屬性中的位元組數組轉換為想要的對象,就像在發送的時候將領域對象轉換為Message一樣,將接收到的Message轉換為領域對像也很繁瑣。這裡可以考慮使用RabbitTemplate的receiveAndConvert()方法作為替代方案:
Spittle spittle = (Spittle) rabbit.receiveAndConvert("spittle.test.queue");
receiveAndConvert()方法會使用與sendAndConvert()方法相同的訊息轉換器,將Message物件轉換為原始的類型。
呼叫receive()和receiveAndConvert()方法都會立即傳回,如果佇列中沒有等待的訊息,將會得到null。這時一般需要程式設計師自己管理輪詢以及必要的線程,實現隊列監控。如果不想每次都同步輪詢等待訊息到達,可以使用Spring AMQP提供的訊息驅動pojo,下面就看看使用訊息驅動pojo的方式來接收訊息。
使用訊息驅動pojo來接收訊息
如果想要在訊息驅動pojo中非同步地消費使用Spittle對象,先解決這個pojo本身,如下的SpittleTestHandler扮演了這個角色:
public class SpittleTestHandler {public void handleSpittleTest (Spittle spittle) { ... } }
其實這個類別並沒有依賴AMQP,不管透過什麼機制傳遞過來Spittle對象,它都能夠處理。
這裡還需要在Spring應用上下文中將SpittleTestHandler聲明為一個bean:
<bean></bean>
最後要聲明一個監聽器容器和監聽器,當訊息到達的時候,能夠調用SpittleTestHandler,配置如下:
<listener-container><listener></listener></listener-container>
上面的
以上是java中使用Spring和AMQP發送接收訊息(下)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JVM通過JavaNativeInterface(JNI)和Java標準庫處理操作系統API差異:1.JNI允許Java代碼調用本地代碼,直接與操作系統API交互。 2.Java標準庫提供統一API,內部映射到不同操作系統API,確保代碼跨平台運行。

modularitydoesnotdirectlyaffectJava'splatformindependence.Java'splatformindependenceismaintainedbytheJVM,butmodularityinfluencesapplicationstructureandmanagement,indirectlyimpactingplatformindependence.1)Deploymentanddistributionbecomemoreefficientwi

BytecodeinJavaistheintermediaterepresentationthatenablesplatformindependence.1)Javacodeiscompiledintobytecodestoredin.classfiles.2)TheJVMinterpretsorcompilesthisbytecodeintomachinecodeatruntime,allowingthesamebytecodetorunonanydevicewithaJVM,thusfulf

javaachievesplatformIndependencEthroughThoJavavIrtualMachine(JVM),wodecutesbytecodeonyanydenanydevicewithajvm.1)javacodeiscompiledintobytecode.2)

JavaGUI開發中的平台獨立性面臨挑戰,但可以通過使用Swing、JavaFX,統一外觀,性能優化,第三方庫和跨平台測試來應對。 JavaGUI開發依賴於AWT和Swing,Swing旨在提供跨平台一致性,但實際效果因操作系統不同而異。解決方案包括:1)使用Swing和JavaFX作為GUI工具包;2)通過UIManager.setLookAndFeel()統一外觀;3)優化性能以適應不同平台;4)使用如ApachePivot或SWT的第三方庫;5)進行跨平台測試以確保一致性。

JavadevelovermentIrelyPlatForm-DeTueTososeVeralFactors.1)JVMVariationsAffectPerformanceNandBehaviorAcroSsdifferentos.2)Nativelibrariesviajnijniiniininiinniinindrododerplatefform.3)

Java代碼在不同平台上運行時會有性能差異。 1)JVM的實現和優化策略不同,如OracleJDK和OpenJDK。 2)操作系統的特性,如內存管理和線程調度,也會影響性能。 3)可以通過選擇合適的JVM、調整JVM參數和代碼優化來提升性能。

Java'splatFormentenceHaslimitations不包括PerformanceOverhead,versionCompatibilityIsissues,挑戰WithnativelibraryIntegration,Platform-SpecificFeatures,andjvminstallation/jvminstallation/jvmintenance/jeartenance.therefactorscomplicatorscomplicatethe“ writeOnce”


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

禪工作室 13.0.1
強大的PHP整合開發環境

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver CS6
視覺化網頁開發工具

WebStorm Mac版
好用的JavaScript開發工具

DVWA
Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中