Java SpringBoot 整合 ActiveMQ

gung123發表於2020-02-26

瞭解springcloud架構可以加求求:三五三六二四七二五九

一、 如果要想在專案之中去使用 ActiveMQ 元件,則應該為專案新增依賴支援庫,修改 pom.xml 配置檔案:

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-activemq</artifactId>
        </dependency>

 二、修改 application.yml 配置檔案進行 activemq 的配置;

server:
  port: 80
spring:
  messages:
    basename: i18n/Messages,i18n/Pages
  jms:
    pub-sub-domain: false   # 配置訊息的型別,如果是true則表示為topic訊息,如果為false表示Queue訊息
  activemq:
    user: studyjava    # 連線使用者名稱
    password: hello   # 連線密碼
    broker-url: tcp://activemq-server:61616 # 訊息元件的連線主機資訊

三、  隨後定義一個訊息的消費者,消費者主要是進行一個監聽控制,在 SpringBoot 裡面可以直接利用註解@JmsListener進行監聽:

package cn.study.microboot.consumer;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Service;
@Service
public class MessageConsumerService {
    @JmsListener(destination="study.msg.queue")
    public void receiveMessage(String text) {    // 進行訊息接收處理
        System.err.println("【*** 接收訊息 ***】" + text);
    }
}

四、 隨後建立訊息的傳送者服務,一般而言如果進行訊息的傳送往往會準備出一個業務介面來:

package cn.study.microboot.producer;
public interface IMessageProducerService {   
 public void sendMessage(String msg) ;
  }

 五、隨後建立一個配置程式類,定義 ActiveMQ 的訊息傳送模版處理類:

package cn.study.microboot.config;
import javax.jms.Queue;
import org.apache.activemq.command.ActiveMQQueue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jms.annotation.EnableJms;
@Configuration
@EnableJms
public class ActiveMQConfig {
    @Bean
    public Queue queue() {
        return new ActiveMQQueue("study.msg.queue") ;
    }
}

六、 建立訊息傳送的子類實現訊息傳送處理:

package cn.study.microboot.producer.impl;
import javax.annotation.Resource;
import javax.jms.Queue;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Service;
import cn.study.microboot.producer.IMessageProducerService;
@Service
public class MessageProducerServiceImpl implements IMessageProducerService {
    @Resource
    private JmsMessagingTemplate jmsMessagingTemplate;
    @Resource
    private Queue queue;
    @Override
    public void sendMessage(String msg) {
        this.jmsMessagingTemplate.convertAndSend(this.queue, msg);
    }
}

七、 編寫測試類來觀察訊息的處理:

package cn.study.microboot.test;
import javax.annotation.Resource;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import cn.study.microboot.StartSpringBootMain;
import cn.study.microboot.producer.IMessageProducerService;
@SpringBootTest(classes = StartSpringBootMain.class)
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
public class TestActiveMQ {
    @Resource
    private IMessageProducerService messageProducer;
    @Test
    public void testSend() throws Exception {
        for (int x = 0; x < 10; x++) {
            this.messageProducer.sendMessage("study - " + x);
        }
    }
}

基於 SpringBoot 配置的 JMS 的元件訪問整體的處理十分簡單

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952307/viewspace-2677363/,如需轉載,請註明出處,否則將追究法律責任。

相關文章