springboot+rabbitmq의 통합

10175 단어 rabbitmq
1.queue의 코드 통합: 무슨 뜻입니까?통속적으로 말하면 한 곳에서 생산하고 한 곳만 소비하는 것이다.2. exchange의 통합: 속칭 방송은 한 곳에서 여러 곳에서 생산하고 소식을 받는 것이다.
첫 번째queue는 부하의 균형을 맞출 수 있다.모든 소비자에게 고르게 분배될 것이다.두 번째는 메일을 보내는 것과 유사하다. 메시지가 지정된 사람은 모두 메일을 받는다.
좋아, 나는 문서권의 개념을 말하기 싫어, 단순 데모와 퀴크 스타트를 좋아해.건더기, 건더기!!
코드는 실행할 수 있는springboot을 기반으로 한 통합이 있습니다. 프로그래머로서springboot를 만들지 못하면rabbitmq는 말할 것도 없습니다.
1. queue의 통합
 @RequestMapping("/send")
    public User send(){
        User user = new User();
        user.setName("  ");
        user.setId(1L);
        user.setAge(12);
        user.setSex(1);
        rabbitTemplate.convertAndSend("hailang",user);
        return user;
    }

실체 bean
public class User implements Serializable{

    private Long id;
    private String name;
    private Integer age;
    private Integer sex;

    public User(){};

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Integer getSex() {
        return sex;
    }

    public void setSex(Integer sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                '}';
    }
@Component
public class Receiver {

    @RabbitListener(queues = "hailang")
    public void receiver1(User user){
        System.out.println("hailang1:"+user);
    }
}

queue의 코드 테스트 실행 인터페이스, 컨트롤러에서 소비 결과를 볼 수 있습니다.그리고 베이스 코드를 읽어보니 클래스는 모두 반사로 발송되기 때문에 서열화 문제를 고려할 필요가 없다.프레임워크가 고도로 집적되어 우리의 개발을 편리하게 하다.
2. 브로드캐스트의 통합
import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FanoutRabbitConfig {

    @Bean
    public Queue AMessage() {
        return new Queue("fanout.A");
    }

    @Bean
    public Queue BMessage() {
        return new Queue("fanout.B");
    }

    @Bean
    public Queue CMessage() {
        return new Queue("fanout.C");
    }

    @Bean
    FanoutExchange fanoutExchange() {
        return new FanoutExchange("fanoutExchange");
    }

    @Bean
    Binding bindingExchangeA(Queue AMessage,FanoutExchange fanoutExchange) {
        return BindingBuilder.bind(AMessage).to(fanoutExchange);
    }

    @Bean
    Binding bindingExchangeB(Queue BMessage, FanoutExchange fanoutExchange) {
        return BindingBuilder.bind(BMessage).to(fanoutExchange);
    }

    @Bean
    Binding bindingExchangeC(Queue CMessage, FanoutExchange fanoutExchange) {
        return BindingBuilder.bind(CMessage).to(fanoutExchange);
    }
}

메시지 보내기 주의 발송 방법 첫 번째 매개 변수
   @RequestMapping("/send/group")
    public User sendGroup(){
        User user = new User();
        user.setName("  ");
        user.setId(1L);
        user.setAge(12);
        user.setSex(1);
        rabbitTemplate.convertAndSend("fanoutExchange","",user);
        return user;
    }

메시지 수신
import com.demo.model.User;
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
@RabbitListener(queues = "fanout.A")
public class Receiver1 {

    @RabbitHandler
    public void receiver4(User user){
        System.out.println("group1:"+user);
    }

}
import org.springframework.amqp.rabbit.annotation.RabbitHandler;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
@RabbitListener(queues = "fanout.B")
public class Recevier2 {

    @RabbitHandler
    public void receiver4(User user){
        System.out.println("group2:"+user);
    }
}

브라우저, controller의 URL을 실행하면 동시에 소비를 얻을 수 있습니다.

좋은 웹페이지 즐겨찾기