springboot整合rabbitmq(direct模式)

POM文件

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-amqp</artifactId>
    <version>2.0.6.RELEASE</version>
</dependency>

yml文件

spring:
  rabbitmq:
    host: 192.168.111.129
    username: admin
    password: admin
    virtual-host: /

provider

配置類

@Configuration
public class EmailConfig {
    @Bean
    DirectExchange emailExchange(){
        return new DirectExchange("EmailExchange");
    }
}

生產消息

@RestController
@RequestMapping("amqp")
public class AmqpController {

    @Autowired
    private RabbitTemplate rabbitTemplate;

    @GetMapping("/direct")
    public String sendEmail(@RequestParam Map<String,Object> params){
        String msg = params.get("msg").toString();
        rabbitTemplate.convertAndSend("EmailExchange","EmailRoutingKey",msg);
        return "ok";
    }
}

consumer

java配置類方式

配置類

@Configuration
public class EmailConfig {
    @Bean
    public DirectExchange EmailExchange(){
        return new DirectExchange("EmailExchange");
    }

    @Bean
    public Queue EmailQueue(){
        return new Queue("EmailQueue");
    }

    @Bean
    public Binding BindEmail() {
        return BindingBuilder.bind(EmailQueue()).to(EmailExchange()).with("EmailRoutingKey");
    }
}

消費消息

@Component
public class EmailReceiver {

    private int cout=0;

    @RabbitListener(queues = "EmailQueue")
    public void receiver(Channel channel, String msg, Message message) throws IOException {
        System.out.println("收到消息:"+msg);
    }
}
純註解方式
@Component
public class Listener {

    @RabbitListener(bindings = @QueueBinding(
            value = @Queue(value = "EmailQueue"),
            exchange = @Exchange(
                    value = "EmailExchange",
                    ignoreDeclarationExceptions = "true",
                    type = ExchangeTypes.DIRECT
            ),
            key = {"EmailRoutingKey"}))
    public void listen(String msg){
        System.out.println("接收到消息:" + msg);
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章