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

溫馨提示×

溫馨提示×

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

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

淺談Spring Boot 整合ActiveMQ的過程

發布時間:2020-10-11 07:14:56 來源:腳本之家 閱讀:142 作者:蝦游于海 欄目:編程語言

RabbitMQ是比較常用的AMQP實現,這篇文章是一個簡單的Spring boot整合RabbitMQ的教程。

安裝ActiveMQ服務器,(也可以不安裝,如果不安裝,會使用內存mq)

構建Spring boot項目,增加依賴項,只需要添加這一項即可

<!-- 添加acitivemq依賴 -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

增加Application類

@SpringBootApplication
@EnableScheduling //使用定時任務發送消息
public class MqTestApplication {
  public static void main(String[] args) {
    SpringApplication.run(MqTestApplication.class, args);
  }
}

配置application.yml

spring:
 activemq:
  broker-url: tcp://127.0.01:61616
  packages:
   trust-all: true

構建一個數據Model,可以發送和消費的數據類型有: String, byte array, Map<String,?>, Serializable object.

// 如果發送的消息是一個對象,必須implements Serializable接口
public class TModel implements Serializable {
  private static final long serialVersionUID = -921008687184331557L;
  private int count;
  public TModel(int count) {
    this.count = count;
  }

  @Override
  public String toString() {
    return "TModel [count=" + count + "]";
  }

}

構建Producer

@Component
public class Producer {
  // 在Producer中注入JmsTemplate,我們可以通過這個template發送消息
  private final JmsTemplate jmsTemplate;
  private int count = 0;

  @Autowired
  public Producer(JmsTemplate jmsTemplate) {
    this.jmsTemplate = jmsTemplate;
  }

  // 這里使用Spring Boot的定時任務發送消息
  @Scheduled(fixedRate = 1000)
  public void create() {
    // 使用convertAndSend發送消息
    jmsTemplate.convertAndSend("queue1", new TModel(count++));
  }
}

構建Consumer

@Component
public class Consumer {
  @JmsListener(destination = "queue1")
  public void comsume(TModel content) {
    System.out.println("recive message from queue1 [" + content + "]");
  }
}

特別備注:如果我們的生產者和消費者在不同的Module中時,最好將要消費的數據抽象成公共Module.程序是通過Serializable來序列化和反序列化對象的。必須保證生產者和消費者的對象模型的serialVersionUID是一致的。

項目地址: https://github.com/ldwqh0/active-mq-spring.git

示例:配置rabbitmq ,增加一個隊列

@Configuration
public class Aqueue {
@Bean
public Queue queue() {
return new Queue("good");
}

}

定義一個生產者.

當啟用activemq之后,會自動創建一個AmqpTemplate ,可以被注入到任何需要的地方,我們可以通過這個AmqpTemplate發送消息到MQ中

/**
* 定義一個生產者
* @author LiDong
*/
@RestController
@RequestMapping("/test")
public class SendController {
@Autowired
private AmqpTemplate template;

@GetMapping
public String testSend() {
// 使用AmqpTemplate發送消息
template.convertAndSend("good", "good");
return "success";
}
}

定義消費者,通過指定RabbitListener(queues='good')指定消費的隊列

@Component
public class Consumer {
/**
* 定義一個消費者
* @param message
*/
@RabbitListener(queues = "good")
public void handler(String message) {
System.out.println("recive message from " + message);
}
}

啟動測試,在瀏覽器中輸入 http://localhost:8080/test 即可發送一條消息到隊列中。 該對列可以被消費者處理

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

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

AI

伊宁市| 建宁县| 太康县| 肃南| 宁远县| 洛隆县| 福泉市| 宾阳县| 巢湖市| 屯留县| 镇原县| 枣庄市| 伊通| 寿光市| 新乡市| 峨边| 丹东市| 阿克苏市| 揭西县| 馆陶县| 获嘉县| 岫岩| 灌云县| 丽江市| 高碑店市| 荆州市| 虞城县| 南岸区| 连山| 闸北区| 巫溪县| 夏津县| 苍溪县| 郓城县| 广宗县| 阿图什市| 南投县| 鲁甸县| 平舆县| 明星| 清流县|