Springboot 통합 ActiveMQ(Queue 와 Topic 두 가지 모드)
10657 단어 SpringbootActiveMQQueueTopic
ActiveMQ 안내
1.ActiveMQ 안내
Apache ActiveMQ 는 Apache 소프트웨어 재단 이 개발 한 오픈 소스 메시지 미들웨어 이다.ActiveMQ 는 순수한 자바 프로그램 이기 때문에 운영 체제 가 자바 가상 머 신 을 지원 하면 ActiveMQ 가 실 행 될 수 있 습 니 다.
2.ActiveMQ 다운로드
다운로드 주소:http://activemq.apache.org/components/classic/download/
다운로드 완료 후 압축 을 풀 고 activemq.bat 파일 을 더 블 클릭 하여 엽 니 다(설치 하지 않 고 직접 사용).디 렉 터 리 와 열 면 다음 과 같은 효과 가 있 습 니 다.
실행 후 브 라 우 저 방문http://localhost:8161/주소 가 인터페이스 에 들 어 갑 니 다.
Manage ActiveMQ broker 를 누 르 면 ActiveMQ 관리 페이지 에 로그 인 합 니 다.기본 계 정과 비밀 번 호 는 모두 admin 입 니 다.관리 페이지 는 다음 과 같 습 니 다.
SpringBoot 통합 ActiveMQ
1.새로운 SpringBoot 프로젝트
새 Springboot 프로젝트 를 만 들 고 의존 도 를 추가 합 니 다.프로젝트 의 전체 pom.xml 파일 은 다음 과 같 습 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.mcy</groupId>
<artifactId>springboot-mq</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot-mq</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--Activemq -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.프로젝트 구조3.관련 설정 정보
application.properties 클래스 에 ActiveMQ 와 관련 된 설정 정 보 를 추가 합 니 다.
server.port=8080
server.servlet.context-path=/mq
#MQ
spring.activemq.broker-url=tcp://localhost:61616
#
spring.activemq.user=admin
#
spring.activemq.password=admin
# Queue Topic,false Queue,true Topic, false-Queue
spring.jms.pub-sub-domain=false
#spring.jms.pub-sub-domain=true
# , topic
myqueue: activemq-queue
mytopic: activemq-topic
4.ActiveMQ 설정 클래스ActiveMQ 설정 클래스 ConfigBean,Queue 대기 열과 topic 두 가지 모드 를 설 정 했 습 니 다.코드 는 다음 과 같 습 니 다.
import org.apache.activemq.command.ActiveMQQueue;
import org.apache.activemq.command.ActiveMQTopic;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.stereotype.Component;
import javax.jms.Topic;
/**
1. MQ
*/
@Component
@EnableJms
public class ConfigBean {
@Value("${myqueue}")
private String myQueue;
@Value("${mytopic}")
private String topicName;
//
@Bean
public ActiveMQQueue queue(){
return new ActiveMQQueue(myQueue);
}
//topic
@Bean
public Topic topic(){
return new ActiveMQTopic(topicName);
}
}
대기 열 모드대기 열 모드 즉 점 대 점 전송.
점 대 점 메시지 전달 역 의 특징 은 다음 과 같다.
모든 소식 은 1 대 1 과 유사 한 소비자 만 있 을 수 있다.마치 개인 택배 로 자기가 받 은 것 과 같다.
소식 의 생산자 와 소비자 사이 에는 시간 적 상관 성 이 없다.소비자 가 생산자 가 메 시 지 를 보 낼 때 운행 상태 에 있 든 없 든 간 에 소비 자 는 메 시 지 를 추출 할 수 있다.마치 우리 가 문 자 를 보 내 는 것 처럼 발송 자가 보 낸 후에 수신 자가 바로 받 고 바로 보 는 것 은 아니다.
소식 이 소 비 된 후 대열 에 저장 되 지 않 기 때문에 소비 자 는 이미 소 비 된 소식 을 소비 하지 않 을 것 이다.
1.대기 열 생산자
Queue ProducerController 클래스 는 대기 열 생산자 컨트롤 러 로 메시지 대기 열 에 메 시 지 를 보 냅 니 다.코드 는 다음 과 같 습 니 다:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.jms.Queue;
/*
*
*/
@RestController
public class QueueProducerController {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
private Queue queue;
/*
*
*/
@RequestMapping("/sendmsg")
public void sendmsg(String msg) {
System.out.println(" :" + msg);
//
this.jmsMessagingTemplate.convertAndSend(this.queue, msg);
}
}
2.대열 소비자Queue Consumer Controller 류 는 대기 열 소비자 컨트롤 러 이 고 구체 적 인 코드 는 다음 과 같 습 니 다.
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jms.annotation.JmsListener;
import org.springframework.web.bind.annotation.RestController;
/*
1. queue
*/
@RestController
public class QueueConsumerController {
/*
*
*/
@JmsListener(destination="${myqueue}")
public void readActiveQueue(String message) {
System.out.println(" :" + message);
}
}
3.테스트 효과실행 항목 브 라 우 저 에서 접근http://localhost:8080/mq/sendmsg?msg=123。메시지 큐 에 123 을 보 냅 니 다.콘 솔 출력 효과:
ActiveMQ 콘 솔 표시:
Number Of Pending Messages:메시지 대기 열 에서 처리 해 야 할 메시지Number of Consumers:소비자 수Messages Enqueued:메시지 대기 열 에 누적 입장 한 총량Messages Dequeued:누적 소 비 된 메시지 의 총량[주]대기 열 모드 에서 설정 파일 application.properties 에서 spring.jms.pub-sub-domain 속성 은 false 로 설정 해 야 합 니 다.
Topic 모드
topic 모드 는 게시/구독 모드 를 기반 으로 전송 합 니 다.
게시/구독 모드 의 전송 특징 은 다음 과 같 습 니 다.
Topic ProducerController 류 는 topic 생산자 컨트롤 러 로 메시지 큐 에 메 시 지 를 보 냅 니 다.코드 는 다음 과 같 습 니 다:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jms.core.JmsMessagingTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.jms.Queue;
import javax.jms.Topic;
/*
* topic
*/
@RestController
public class TopicProducerController {
@Autowired
private JmsMessagingTemplate jmsMessagingTemplate;
@Autowired
private Topic topic;
/*
*
*/
@RequestMapping("/topicsendmsg")
public void sendmsg(String msg) {
System.out.println(" MQ:" + msg);
//
this.jmsMessagingTemplate.convertAndSend(this.topic, msg);
}
}
2.토픽 소비자Topic Consumer Controller 류 는 topic 소비자 컨트롤 러 로 그 중에서 두 가지 소비자 방법 을 썼 는데 두 명의 사용자 가 구독 하 는 것 으로 이해 할 수 있다.구체 적 인 코드 는 다음 과 같다.
import org.springframework.jms.annotation.JmsListener;
import org.springframework.web.bind.annotation.RestController;
/*
1. topic
*/
@RestController
public class TopicConsumerController {
/*
*
*/
@JmsListener(destination="${mytopic}")
public void readActiveQueue(String message) {
System.out.println(" :" + message);
}
@JmsListener(destination="${mytopic}")
public void readActiveQueue1(String message) {
System.out.println(" :" + message);
}
}
3.테스트 효과실행 항목 브 라 우 저 에서 접근http://localhost:8080/mq/topicsendmsg?msg=123。메시지 큐 에 123 을 보 냅 니 다.콘 솔 출력 효과(두 가지 소비자 방법 이 있 음):
ActiveMQ 콘 솔 표시:
Number of Consumers:소비자 수Messages Enqueued:메시지 대기 열 에 누적 입장 한 총량Messages Dequeued:누적 소 비 된 메시지 의 총량【주】Topic 모드 에서 설정 파일 application.properties 에서 spring.jms.pub-sub-domain 속성 은 true 로 설정 해 야 합 니 다.
Springboot 통합 ActiveMQ(Queue 와 Topic 두 가지 모드)에 대한 자세 한 설명 은 여기까지 입 니 다.더 많은 Springboot 통합 ActiveMQ 내용 은 이전 글 을 검색 하거나 아래 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.