<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # 使用JMS進行消息傳遞 本指南將引導您完成使用JMS代理發布和訂閱消息的過程。 ## 你會建立什么 您將構建一個使用Spring的應用程序 `JmsTemplate` 發布一條消息并使用 `@JmsListener` 托管bean的帶批注的方法。 ## 你需要什么 * 約15分鐘 * 最喜歡的文本編輯器或IDE * [JDK 1.8](http://www.oracle.com/technetwork/java/javase/downloads/index.html) 或更高版本 * [Gradle 4+](http://www.gradle.org/downloads) 或 [Maven 3.2+](https://maven.apache.org/download.cgi) * 您還可以將代碼直接導入到IDE中: * [彈簧工具套件(STS)](https://spring.io/guides/gs/sts) * [IntelliJ IDEA](https://spring.io/guides/gs/intellij-idea/) ## 如何完成本指南 像大多數Spring 一樣 [入門指南](https://spring.io/guides) ,您可以從頭開始并完成每個步驟,也可以繞過您已經熟悉的基本設置步驟。 無論哪種方式,您最終都可以使用代碼。 要 **從頭開始** ,請繼續 [使用Gradle構建](https://spring.io/guides/gs/messaging-jms/#scratch) 。 要 **跳過基礎知識** ,請執行以下操作: * [下載](https://github.com/spring-guides/gs-messaging-jms/archive/master.zip) 并解壓縮本指南的源存儲庫,或使用 對其進行克隆 [Git](https://spring.io/understanding/Git) : `git clone [https://github.com/spring-guides/gs-messaging-jms.git](https://github.com/spring-guides/gs-messaging-jms.git)` * 光盤進入 `gs-messaging-jms/initial` * 跳至 [創建消息接收器](https://spring.io/guides/gs/messaging-jms/#initial) 。 **完成后** ,您可以根據中的代碼檢查結果 `gs-messaging-jms/complete`. ## 用Gradle構建 ## 用Maven編譯 ## 使用您的IDE進行構建 ## 創建一個消息接收者 Spring提供了將消息發布到任何 [POJO的方法](https://spring.io/understanding/POJO) 。 在本指南中,您將研究如何通過JMS消息代理發送消息。 首先,讓我們創建一個非常簡單的POJO,其中體現了電子郵件的詳細信息。 請注意,我們沒有發送電子郵件。 我們只是將有關某個內容的詳細信息從一個地方發送到另一個地方,以發送消息。 `src/main/java/hello/Email.java` ~~~ Unresolved directive in <stdin> - include::complete/src/main/java/hello/Email.java[] ~~~ 這個POJO非常簡單,包含兩個字段 **to** 和 **body** ,以及假定的getter和setter集。 在這里,您可以定義一個消息接收者: `src/main/java/hello/Receiver.java` ~~~ Unresolved directive in <stdin> - include::complete/src/main/java/hello/Receiver.java[] ~~~ `Receiver`也稱為 **消息驅動POJO** 。 如您在上面的代碼中看到的,不需要實現任何特定的接口,也不需要使該方法具有任何特定的名稱。 此外,該方法可以具有 [非常靈活的簽名](https://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#jms-annotated-method-signature) 。 特別注意,此類在JMS API上沒有導入。 這 `JmsListener` 批注定義了名稱 `Destination` 該方法應偵聽的內容以及對 `JmsListenerContainerFactory`用于創建基礎消息偵聽器容器。 嚴格來講,除非您需要自定義容器的構建方式,否則不需要最后一個屬性,因為Spring Boot會在必要時注冊默認工廠。 該 [參考文檔](https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#jms-annotated-method-signature) 涵蓋得更詳細。 ## 使用Spring發送和接收JMS消息 接下來,連接發送方和接收方。 `src/main/java/hello/Application.java` ~~~ Unresolved directive in <stdin> - include::complete/src/main/java/hello/Application.java[] ~~~ `@SpringBootApplication` 是一個方便注釋,它添加了以下所有內容: * `@Configuration`:將類標記為應用程序上下文的Bean定義的源。 * `@EnableAutoConfiguration`:告訴Spring Boot根據類路徑設置,其他bean和各種屬性設置開始添加bean。 例如,如果 `spring-webmvc` 在類路徑上,此注釋將應用程序標記為Web應用程序并激活關鍵行為,例如設置 `DispatcherServlet`. * `@ComponentScan`:告訴Spring在服務器中尋找其他組件,配置和服務 `hello` 包,讓它找到控制器。 這 `main()` 方法使用Spring Boot的 `SpringApplication.run()`啟動應用程序的方法。 您是否注意到沒有一行XML? 沒有 `web.xml`文件。 該Web應用程序是100%純Java,因此您無需處理任何管道或基礎結構。 `@EnableJms` 觸發發現帶有注釋的方法 `@JmsListener`,在后臺創建消息偵聽器容器。 為了清楚起見,我們還定義了 `myFactory` 在中引用的bean `JmsListener`接收者的注釋。 因為我們使用 `DefaultJmsListenerContainerFactoryConfigurer` 由Spring Boot提供的基礎架構 `JmsMessageListenerContainer` 將與引導默認情況下創建的引導程序相同。 默認值 `MessageConverter` 只能轉換基本類型(例如 `String`, `Map`, `Serializable`)和我們的 `Email` 不是 `Serializable`故意。 我們要使用Jackson并將內容以文本格式序列化為json(即 `TextMessage`)。 Spring Boot將檢測到是否存在 `MessageConverter` 并將其關聯到兩個默認值 `JmsTemplate` 和任何 `JmsListenerContainerFactory` 由...制作 `DefaultJmsListenerContainerFactoryConfigurer`. `JmsTemplate`使將消息發送到JMS目標變得非常簡單。 在里面 `main` 跑步者方法,啟動后,您可以使用 `jmsTemplate` 發送一個 `Email`POJO。 因為我們的習俗 `MessageConverter` 已自動與其關聯,則將在 `TextMessage` 只要。 您未看到定義的兩個bean是 `JmsTemplate` 和 `ConnectionFactory`。 這些是由Spring Boot自動創建的。 在這種情況下,ActiveMQ代理將以嵌入式方式運行。 默認情況下,Spring Boot創建一個 `JmsTemplate`配置為 來 [傳輸到隊列](https://docs.spring.io/spring/docs/current/spring-framework-reference/integration.html#jms-destinations) 通過將 **pubSubDomain** 設置為false 。 這 `JmsMessageListenerContainer`也配置相同。 要覆蓋,請設置 `spring.jms.isPubSubDomain=true` 通過Boot的屬性設置(在內部 `application.properties`或按環境變量)。 然后確保接收容器具有相同的設置。 春天的 JmsTemplate 可以直接通過其接收消息 receive方法,但只能同步工作,這意味著它將阻塞。 因此,我們建議您使用監聽器容器,例如 DefaultMessageListenerContainer 使用基于緩存的連接工廠,因此您可以異步使用消息,并以最大的連接效率使用消息。 ### 建立可執行的JAR 您可以使用Gradle或Maven從命令行運行該應用程序。 您還可以構建一個包含所有必需的依賴項,類和資源的可執行JAR文件,然后運行該文件。 生成可執行jar使得在整個開發生命周期中,跨不同環境等等的情況下,都可以輕松地將服務作為應用程序進行發布,版本控制和部署。 如果您使用Gradle,則可以通過使用以下命令運行該應用程序 `./gradlew bootRun`。 或者,您可以通過使用以下命令構建JAR文件: `./gradlew build` 然后運行JAR文件,如下所示: ~~~ java -jar build/libs/gs-messaging-jms-0.1.0.jar ~~~ 如果您使用Maven,則可以通過使用以下命令運行該應用程序 `./mvnw spring-boot:run`。 或者,您可以使用以下命令構建JAR文件: `./mvnw clean package` 然后運行JAR文件,如下所示: ~~~ java -jar target/gs-messaging-jms-0.1.0.jar ~~~ 此處描述的步驟將創建可運行的JAR。 您還可以 構建經典的WAR文件 。 當它運行時,埋在所有日志中,您應該看到以下消息: ~~~ Sending an email message. Received <Email{to=info@example.com, body=Hello}> ~~~ ## 概括 恭喜你! 您剛剛開發了基于JMS的消息的發布者和使用者。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看