Spring Boot 통합 ActiveMQ 프로세스에 대한 간단한 설명
ActiveMQ 서버 설치(설치하지 않을 수도 있고 설치하지 않을 경우 메모리 mq 사용)
Spring boot 프로젝트를 구축하고 의존 항목을 늘리려면 이것만 추가하면 된다
<!-- acitivemq -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-activemq</artifactId>
</dependency>
애플리케이션 클래스 추가
@SpringBootApplication
@EnableScheduling //
public class MqTestApplication {
public static void main(String[] args) {
SpringApplication.run(MqTestApplication.class, args);
}
}
애플리케이션을 구성합니다.yml
spring:
activemq:
broker-url: tcp://127.0.01:61616
packages:
trust-all: true
데이터 모델을 구축하여 전송하고 소비할 수 있는 데이터 유형은 String,bytearray,Map
// , 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 + "]");
}
}
특별 비고: 만약에 우리 생산자와 소비자가 서로 다른 모듈에 있을 때 소비할 데이터를 공공 모듈로 추상화하는 것이 가장 좋다.프로그램은 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 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[MeU] Hashtag 기능 개발➡️ 기존 Tag 테이블에 존재하지 않는 해시태그라면 Tag , tagPostMapping 테이블에 모두 추가 ➡️ 기존에 존재하는 해시태그라면, tagPostMapping 테이블에만 추가 이후에 개발할 태그 기반 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.