<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 帶有嵌入式 ActiveMQ 的 Spring Boot `JMSTemplate` > 原文: [https://howtodoinjava.com/spring-boot/spring-boot-jmstemplate-activemq/](https://howtodoinjava.com/spring-boot/spring-boot-jmstemplate-activemq/) 了解如何使用嵌入式 [ActiveMQ](http://activemq.apache.org/) 配置 [Spring Boot](https://projects.spring.io/spring-boot/) 應用程序,以便借助 [`JMSTemplate`](https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/jms/core/JmsTemplate.html) 發送和接收 [JMS](https://howtodoinjava.com/jms/jms-java-message-service-tutorial/) 消息。 ## 項目結構 請在 [Eclipse](https://howtodoinjava.com/maven/create-a-simple-java-project-using-maven/) 中創建一個 Maven 應用程序,然后在給定的文件夾結構下創建。 ![Spring Boot JMSTemplate - Project Structure](https://img.kancloud.cn/3a/45/3a4550cbf53df5cb3da577f647b91212_322x320.jpg) Spring Boot `JMSTemplate` – 項目結構 要運行該示例,您將需要在運行時中使用 Java 1.8. ## Maven 配置 使用 Spring Boot 和 ActiveMQ 依賴項更新`pom.xml`文件。 此外,對于[對象到 JSON 轉換](https://howtodoinjava.com/jackson/jackson-2-convert-json-to-from-java-object/),我們需要 [Jackson](https://github.com/FasterXML/jackson)。 ```java <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd; <modelVersion>4.0.0</modelVersion> <groupId>com.howtodoinjava.demo</groupId> <artifactId>SpringJMSTemplate</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>SpringJMSTemplate</name> <url>http://maven.apache.org</url> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.2.RELEASE</version> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-activemq</artifactId> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-broker</artifactId> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> </dependency> </dependencies> </project> ``` ## `@EnableJms`和`JmsListenerContainerFactory`配置 通過使用`@SpringBootApplication`注解對其進行注解來創建 Spring Boot 應用程序類。 將此代碼添加到類中。 ```java package com.howtodoinjava.demo; import javax.jms.ConnectionFactory; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jms.DefaultJmsListenerContainerFactoryConfigurer; import org.springframework.context.annotation.Bean; import org.springframework.jms.annotation.EnableJms; import org.springframework.jms.config.DefaultJmsListenerContainerFactory; import org.springframework.jms.config.JmsListenerContainerFactory; import org.springframework.jms.support.converter.MappingJackson2MessageConverter; import org.springframework.jms.support.converter.MessageConverter; import org.springframework.jms.support.converter.MessageType; @SpringBootApplication @EnableJms public class JMSApplication { @Bean public JmsListenerContainerFactory<?> myFactory( ConnectionFactory connectionFactory, DefaultJmsListenerContainerFactoryConfigurer configurer) { DefaultJmsListenerContainerFactory factory = new DefaultJmsListenerContainerFactory(); // This provides all boot's default to this factory, including the message converter configurer.configure(factory, connectionFactory); // You could still override some of Boot's default if necessary. return factory; } @Bean public MessageConverter jacksonJmsMessageConverter() { MappingJackson2MessageConverter converter = new MappingJackson2MessageConverter(); converter.setTargetType(MessageType.TEXT); converter.setTypeIdPropertyName("_type"); return converter; } } ``` * `@SpringBootApplication`注解等效于使用`@Configuration`,`@EnableAutoConfiguration`和`@ComponentScan`及其默認屬性。 這是使用注解配置輕松配置 spring 應用程序的快捷方式。 * `@EnableJms`啟用由`JmsListenerContainerFactory`在封面下創建的`@JmsListener`帶注解的端點。 * `JmsListenerContainerFactory`負責創建負責特定端點的監聽器容器。 作為`DefaultJmsListenerContainerFactory`的典型實現提供了基礎`MessageListenerContainer`支持的必要配置選項。 * `MappingJackson2MessageConverter`用于將`Message`的有效載荷從序列化形式轉換為類型化對象,反之亦然。 * 我們已經配置了`MessageType.TEXT`。 此消息類型可用于傳輸基于文本的消息。 客戶端收到`TextMessage`時,處于只讀模式。 如果客戶端此時嘗試寫入消息,則會拋出`MessageNotWriteableException`。 ## 使用`@JmsListener`的 JMS 消息接收器 消息接收器類是帶有注解`@JmsListener`的單一方法的非常簡單的類。 `@JmsListener`允許您將托管 Bean 的方法公開為 JMS 監聽器端點。 因此,只要在配置的隊列上有任何消息可用(在此示例中,隊列名稱為`jms.message.endpoint`),就會調用帶注解的方法(即`receiveMessage`)。 `@JmsListener`是一個可重復的注釋,因此您可以在同一方法上多次使用它,以將多個 JMS 目標注冊到同一方法。 ```java package com.howtodoinjava.demo; import org.springframework.jms.annotation.JmsListener; import org.springframework.stereotype.Component; @Component public class MessageReceiver { @JmsListener(destination = "jms.message.endpoint") public void receiveMessage(Message msg) { System.out.println("Received " + msg ); } } ``` `Message`類是簡單的 POJO 類。 ```java package com.howtodoinjava.demo; import java.io.Serializable; import java.util.Date; public class Message implements Serializable { private static final long serialVersionUID = 1L; private Long id; private String content; private Date date; public Message() { } public Message(Long id, String content, Date date) { super(); this.id = id; this.content = content; this.date = date; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } @Override public String toString() { return "Message [id=" + id + ", content=" + content + ", date=" + date + "]"; } } ``` ## 使用`JmsTemplate`發送消息 要發送 JMS 消息,您將需要來自 spring 容器的 bean 類`JmsTemplate`的引用。 調用它的`convertAndSend()`方法發送消息。 ```java package com.howtodoinjava.demo; import java.util.Date; import org.springframework.boot.SpringApplication; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.jms.core.JmsTemplate; public class Main { public static void main(String[] args) { // Launch the application ConfigurableApplicationContext context = SpringApplication.run(JMSApplication.class, args); //Get JMS template bean reference JmsTemplate jmsTemplate = context.getBean(JmsTemplate.class); // Send a message System.out.println("Sending a message."); jmsTemplate.convertAndSend("jms.message.endpoint", new Message(1001L, "test body", new Date())); } } ``` ## 示例 執行上述`Main`類的`main()`方法。 這將啟動 Spring Boot 應用程序,然后將消息發送到隊列`jms.message.endpoint`。 `MessageReceiver.receiveMessage()`已經在監聽此隊列地址。 因此此方法將接收到消息,可以通過將消息打印到控制臺進行驗證。 在控制臺中,輸出將如下所示: ```java Sending a message. Received Message [id=1001, content=test body, date=Fri Jul 07 14:19:19 IST 2017] ``` 顯然,郵件已成功發送和接收。 這就是**使用嵌入式 ActiveMQ** 的 Spring `JMSTemplate`的快速示例。 將我的問題放在評論部分。 學習愉快!
                  <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>

                              哎呀哎呀视频在线观看