Spring集成ActiveMQ,封裝ActiveMqService

ActiveMQ是一個很是流行的消息隊列服務中間件,基於JMS(Java Message Service)規範,而且它是一個純Java程序,運行環境只須要Java虛擬機。Spring集成ActiveMQ只需簡單配置,本文進一步分享封裝的ActiveMqService服務。
java


代碼文件git

功能要點github

SpringBoot集成ActiveMQspring

pom.xml服務器

引入ActiveMQ依賴spring-boot-starter-activemqapp

application.ymltcp

配置ActiveMQ服務器broker-url, user, passworkdide

ActiveMqConfig.java函數

配置Bean: ActiveMQQueue, ActiveMQTopic, 還有JmsListenerContainerFactoryspring-boot

封裝ActiveMQ服務

ActiveMqService.java

調用ActiveMQ發送消息:JmsMessagingTemplate.convertAndSend()發送Queue和Topic

接收處理消息

ActiveMqConsumer.java

接收ActiveMQ消息,@JmsListener()聲明處理函數

單元測試

ActiveMqServiceTest.java

測試封裝的ActiveMQ發送接收功能

功能調用

CheckController.java

增長REST接口/chk/mq,調用ActiveMQ發送消息

 

代碼

Github下載:https://github.com/jextop/StarterApi/

 

SpringBoot集成ActiveMQ

1. 新建SpringBoot項目時,選中ActiveMQ,將自動添加ActiveMQ依賴。

 image.png

2. 已有SpringBoot項目,能夠在pom.xml中直接引用ActiveMQ Starter:

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

3. application.yml中配置ActiveMQ服務器信息:

spring:
  activemq:
  broker-url: tcp://127.0.0.1:61616
  user: admin
  password: admin
  in-memory: false
  packages:
    trust-all: true
  pool:
    enabled: false

 

調用ActiveMQ發送消息,封裝服務ActiveMqService.java

1. JmsMessagingTemplate發送消息

a) send()

b) convertAndSend()

c) sendAndReceive(),發送而且等待回覆

d) receive(),等待回覆

2. Queue發送點對點消息

3. Topic發送訂閱消息

 

接收處理ActiveMQ消息,ActiveMqConsumer.java

@JmsListener()聲明處理函數

@Component
public class ActiveMqConsumer {
    @JmsListener(destination = "starter.queue")
    public void listenQueue(String msg) {
        LogUtil.info("Receive queue msg", msg);    }

    @JmsListener(destination = "starter.topic", containerFactory = "jmsTopicListenerContainerFactory")
    public void listenTopic(String msg) {
        LogUtil.info("Receive topic msg", msg);
    }
}

 

單元測試ActiveMqServiceTest.java

@SpringBootTest
public class ActiveMqServiceTest {
    @Autowired
    ActiveMqService activeMqService;

    @Test
    public void testSendQueue() {
        activeMqService.sendQueue(String.format("test active queue: %s", new Date().toString()));
    }

    @Test
    public void testSendTopic() {
        activeMqService.sendTopic(String.format("test active topic: %s", new Date().toString()));
    }
}

 

功能調用

1. 增長RestController:CheckController.java

2. 增長REST接口/chk/mq,調用ActiveMQ發送消息

@GetMapping(path = "/chk/mq")
public Object mq(@RequestAttribute(required = false) String ip) {
    String msg = String.format("check mq, %s, %s 消息隊列", ip, new Date().toString());
    activeMqService.send(msg);

    return new HashMap<String, Object>() {{
        put("chk", "mq");
        put("msg", msg);
    }};
}

 

REST接口調用ActiveMqService示例

image.png

相關文章
相關標籤/搜索