中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用springboot如何實現對activemq進行集成

發布時間:2020-11-18 16:12:03 來源:億速云 閱讀:174 作者:Leah 欄目:編程語言

這篇文章給大家介紹使用springboot如何實現對activemq進行集成,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

ActiveMQ

ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息總線。ActiveMQ 是一個完全支持JMS1.1和J2EE 1.4規范的 JMS Provider實現,盡管JMS規范出臺已經是很久的事情了,但是JMS在當今的J2EE應用中間仍然扮演著特殊的地位。

特性

  1. 多種語言和協議編寫客戶端。語言: Java,C,C++,C#,Ruby,Perl,Python,PHP。應用協議: OpenWire,Stomp REST,WS Notification,XMPP,AMQP
  2. 完全支持JMS1.1和J2EE 1.4規范 (持久化,XA消息,事務)
  3. 對Spring的支持,ActiveMQ可以很容易內嵌到使用Spring的系統里面去,而且也支持Spring2.0的特性
  4. 通過了常見J2EE服務器(如 Geronimo,JBoss 4,GlassFish,WebLogic)的測試,其中通過JCA 1.5 resource adaptors的配置,可以讓ActiveMQ可以自動的部署到任何兼容J2EE 1.4 商業服務器上
  5. 支持多種傳送協議:in-VM,TCP,SSL,NIO,UDP,JGroups,JXTA
  6. 支持通過JDBC和journal提供高速的消息持久化
  7. 從設計上保證了高性能的集群,客戶端-服務器,點對點
  8. 支持Ajax
  9. 支持與Axis的整合
  10. 可以很容易的調用內嵌JMS provider,進行測試
     

更多關于 ActiveMQ 的內容可以點擊這里。

Spring-Boot 集成 ActiveMQ

添加maven依賴

<!-- 
    <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-activemq</artifactId> 
    </dependency> 
    --> 
    <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jms</artifactId> 
    </dependency> 
    <dependency> 
      <groupId>org.apache.activemq</groupId> 
      <artifactId>activemq-client</artifactId> 
    </dependency> 

沒有直接使用注釋的依賴,是因為其含有如下依賴

<dependency> 
  <groupId>org.apache.activemq</groupId> 
  <artifactId>activemq-broker</artifactId> 
</dependency> 

而它的作用是什么呢,會在程序中直接內嵌 ActivityMQ,也就是說不需要安裝 ActiveMQ,但是這個如果服務宕機了,內嵌的 ActiveMQ 也就沒了。關鍵,這個內嵌的 ActiveMQ 而無法看到圖形化界面,所以這里沒有直接使用注釋里的依賴。

在application.properties中增加如下配置

# activemq 
spring.activemq.broker-url=tcp://localhost:61616 
spring.activemq.user=admin 
spring.activemq.password=admin 
spring.activemq.in-memory=true 
spring.activemq.pool.enabled=false 

這里對 ActiveMQ 的端口做一個簡短說明,61616為消息代理接口 ,8161 為管理界面

JAVA代碼實現

定義QUEUE

package com.activemq.queue; 
 
import org.apache.activemq.command.ActiveMQQueue; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
 
import javax.jms.Queue; 
 
@Configuration 
public class QueueConfig { 
 
  @Bean 
  public Queue logQueue() { 
    return new ActiveMQQueue(QueueName.LOG_QUEUE); 
  } 
} 

消息生產者

package com.activemq.producer; 
 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.boot.CommandLineRunner; 
import org.springframework.jms.core.JmsMessagingTemplate; 
import org.springframework.stereotype.Component; 
 
import javax.jms.Queue; 
 
@Component 
public class LogProducer implements CommandLineRunner { 
 
  private static final Logger LOGGER = LoggerFactory.getLogger(LogProducer.class); 
 
  @Autowired 
  private JmsMessagingTemplate jmsMessagingTemplate; 
 
  @Autowired 
  private Queue logQueue; 
 
  @Override 
  public void run(String... strings) throws Exception { 
    send("This is a log message."); 
    LOGGER.info("Log Message was sent to the Queue named sample.log"); 
  } 
 
  public void send(String msg) { 
    this.jmsMessagingTemplate.convertAndSend(this.logQueue, msg); 
  } 
} 

消息消費者

package com.activemq.consumer; 
 
import com.activemq.queue.QueueName; 
import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 
import org.springframework.jms.annotation.JmsListener; 
import org.springframework.stereotype.Component; 
 
@Component 
public class LogConsumer { 
 
  private static final Logger LOGGER = LoggerFactory.getLogger(LogConsumer.class); 
 
  @JmsListener(destination = QueueName.LOG_QUEUE) 
  public void receivedQueue(String msg) { 
    LOGGER.info("Has received from " + QueueName.LOG_QUEUE + ", msg: " + msg); 
  } 
} 

測試接口

@Autowired 
private LogProducer logProducer; 
 
@GetMapping("/activemq/send") 
public String activemq(HttpServletRequest request, String msg) { 
  msg = StringUtils.isEmpty(msg) &#63; "This is Empty Msg." : msg; 
 
  try { 
    logProducer.send(msg); 
  } catch (Exception e) { 
    e.printStackTrace(); 
  } 
  return "Activemq has sent OK."; 
} 

啟動類

增加如下注解@EnableJms

@Configuration//配置控制 
@EnableAutoConfiguration//啟用自動配置 
@ComponentScan//組件掃描 
@EnableConfigurationProperties({EmailProp.class}) 
@EnableJms 
public class Bootstrap { 
 
  private static final Logger LOGGER = LoggerFactory 
      .getLogger(Bootstrap.class); 
 
  public static void main(String[] args) throws Exception { 
    SpringApplication.run(Bootstrap.class, args); 
    LOGGER.info("Server running..."); 
  } 
 
} 

測試

運行服務,在瀏覽器輸入 http://127.0.0.1:8080/activemq/send&#63;msg=test%20log,會在控制臺看到如下輸出

INFO 1498 --- [enerContainer-1] c.j.a.activemq.consumer.LogConsumer   : Has received from sample.log, msg: test log 
[DefaultMessageListenerContainer-1] INFO c.j.a.activemq.consumer.LogConsumer - Has received from sample.log, msg: test log 

打開 ActiveMQ 的管理頁面,用戶名密碼都是admin,可以看到如下信息

使用springboot如何實現對activemq進行集成

關于使用springboot如何實現對activemq進行集成就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

蚌埠市| 嘉峪关市| 安阳市| 丰都县| 合江县| 武夷山市| 昌宁县| 黎川县| 江源县| 库伦旗| 涿州市| 临桂县| 巴彦县| 阳山县| 中阳县| 泰和县| 云阳县| 安西县| 宜兰市| 枣强县| 富锦市| 株洲县| 宜宾市| 洪雅县| 会泽县| 阳朔县| 黄山市| 沛县| 宁武县| 五寨县| 唐山市| 深泽县| 阜康市| 县级市| 石屏县| 永福县| 大洼县| 延安市| 泗阳县| 江孜县| 锦州市|