1. 程式人生 > >activemq安裝運行及其在springboot中的queue和topic使用

activemq安裝運行及其在springboot中的queue和topic使用

listen conn sendto pub package 密碼 topic red int

  • 安裝activemq
  • 運行
  • springboot使用
    • 依賴
    • 配置
    • Producer
    • Consumer
    • ComsumerTopic
    • 使用

安裝activemq

http://activemq.apache.org/download.html

運行

運行
bin\win64\activemq.bat

訪問 http://127.0.0.1:8161/admin/ 
用戶名/密碼:admin/admin

springboot使用

依賴

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

配置

spring.activemq.broker-url=tcp://localhost:61616
spring.activemq.close-timeout=5000
spring.activemq.in-memory=false
spring.activemq.pool.max-connections=100
spring.activemq.send-timeout=3000

# spring.jms.pub-sub-domain=true 開啟topic訂閱,不開啟就是queue

Producer

生產者

package jky.springboot.alliinone.activemq;

import javax.jms.Destination;
import javax.jms.Topic;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.stereotype.Component;

@Component
public class Producer {
 
    @Autowired
    private JmsMessagingTemplate jmsMessagingTemplate;

    // 使用queue
    public void send(Destination destination, final String message) {
        jmsMessagingTemplate.convertAndSend(destination, message + "from queue");
    }
    
    //使用topic使用
    //public void send(Topic topi, final String message) {
    //    jmsMessagingTemplate.convertAndSend(topic, message + " from topic");
    //}

    // 監聽out隊列
    @JmsListener(destination="out.queue")
    public void consumerMessage(String text){
        System.out.println("從out.queue隊列收到的回復信息為:"+text);
    }
}

Consumer

queue消費者

package jky.springboot.alliinone.activemq;

import org.springframework.jms.annotation.JmsListener;
import org.springframework.messaging.handler.annotation.SendTo;
import org.springframework.stereotype.Component;

@Component
public class Consumer {
    // 監聽mytest隊列,並且發送消息到out隊列
    @JmsListener(destination = "mytest.queue")
    @SendTo("out.queue")
    public String receiveQueue(String text) {
        System.out.println("Consumer收到的信息為:"+text);
        return "return message "+text;
    }
}

ComsumerTopic

topic消費者

package jky.springboot.alliinone.activemq;

import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;

@Component
public class ComsumerTopic {
    // 監聽sample topic
    @JmsListener(destination = "sample.topic")
    public void receiveTopic(String text) {
        System.out.println("Consumer收到的topic信息為:"+text);
    }
}

使用

隊列生產者生產消息
Destination destination = new ActiveMQQueue("mytest.queue");
producer.send(destination, "I am YeJiaWei");

topic生產者生產消息
Topic topic = new ActiveMQTopic("sample.topic");
producer.send(topic, "I am YeJiaWei");

activemq安裝運行及其在springboot中的queue和topic使用