Spring Boot 통합 ActiveMQ 프로세스에 대한 간단한 설명

3782 단어 SpringBootActiveMQ
RabbitMQ는 비교적 자주 사용하는 AMQP 구현입니다. 이 글은 간단한 Spring boot 통합 RabbitMQ의 강좌입니다.
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,Serializable object.

//  , 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대기열에 메시지를 보낼 수 있습니다.이 대열은 소비자에게 처리될 수 있다
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기