• RabbitMQ 基于API的方式发送和消费消息


    <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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.itheima</groupId>
        <artifactId>chapter081</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.1.3.RELEASE</version>
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-amqp</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>11</source>
                        <target>11</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    server:
      port: 8088
    
    spring:
      rabbitmq:
        host: localhost
        port: 5672
        username: guest
        password: guest
        virtual-host: /
    package com.itheima.domain;
    
    public class User {
        private Integer id;
        private String username;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username;
        }
    
        @Override
        public String toString() {
            return "User{" + "id=" + id + ", username='" + username + '\'' + '}';
        }
    }
    package com.itheima.config;
    
    import org.springframework.amqp.support.converter.Jackson2JsonMessageConverter;
    import org.springframework.amqp.support.converter.MessageConverter;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    @Configuration
    public class RabbitMQConfig {
    
        @Bean
        public MessageConverter messageConverter(){
            return new Jackson2JsonMessageConverter();
        }
    }
    package com.itheima;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
    package com.itheima;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.amqp.core.AmqpAdmin;
    import org.springframework.amqp.core.Binding;
    import org.springframework.amqp.core.FanoutExchange;
    import org.springframework.amqp.core.Queue;
    import org.springframework.amqp.rabbit.core.RabbitTemplate;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import com.itheima.domain.User;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    public class ApplicationTest {
    
        @Autowired
        private AmqpAdmin amqpAdmin;
    
        @Autowired
        private RabbitTemplate rabbitTemplate;
    
        /**
         * 使用AmqpAdmin管理员API定制消息组件
         */
        @Test
        public void amqpAdmin() {
            // 1、定义fanout类型的交换器
            amqpAdmin.declareExchange(new FanoutExchange("fanout_exchange"));
            // 2、定义两个默认持久化队列,分别处理email和sms
            amqpAdmin.declareQueue(new Queue("fanout_queue_email"));
            amqpAdmin.declareQueue(new Queue("fanout_queue_sms"));
            // 3、将队列分别与交换器进行绑定
            amqpAdmin.declareBinding(
                    new Binding("fanout_queue_email", Binding.DestinationType.QUEUE, "fanout_exchange", "", null));
            amqpAdmin.declareBinding(
                    new Binding("fanout_queue_sms", Binding.DestinationType.QUEUE, "fanout_exchange", "", null));
        }
    
        /**
         * 1、Publish/Subscribe工作模式消息发送端
         */
        @Test
        public void psubPublisher() {
            User user = new User();
            user.setId(1);
            user.setUsername("石头");
            rabbitTemplate.convertAndSend("fanout_exchange", "", user);
        }
    }

    package com.itheima;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.amqp.core.AmqpAdmin;
    import org.springframework.amqp.core.Binding;
    import org.springframework.amqp.core.FanoutExchange;
    import org.springframework.amqp.core.Queue;
    import org.springframework.amqp.rabbit.core.RabbitTemplate;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    
    import com.itheima.domain.User;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
    public class ApplicationTest {
    
        @Autowired
        private AmqpAdmin amqpAdmin;
    
        @Autowired
        private RabbitTemplate rabbitTemplate;
    
        /**
         * 使用AmqpAdmin管理员API定制消息组件
         */
        @Test
        public void amqpAdmin() {
            // 1、定义fanout类型的交换器
            amqpAdmin.declareExchange(new FanoutExchange("fanout_exchange"));
            // 2、定义两个默认持久化队列,分别处理email和sms
            amqpAdmin.declareQueue(new Queue("fanout_queue_email"));
            amqpAdmin.declareQueue(new Queue("fanout_queue_sms"));
            // 3、将队列分别与交换器进行绑定
            amqpAdmin.declareBinding(
                    new Binding("fanout_queue_email", Binding.DestinationType.QUEUE, "fanout_exchange", "", null));
            amqpAdmin.declareBinding(
                    new Binding("fanout_queue_sms", Binding.DestinationType.QUEUE, "fanout_exchange", "", null));
        }
    
        /**
         * 1、Publish/Subscribe工作模式消息发送端
         */
        @Test
        public void psubPublisher() {
            User user = new User();
            user.setId(1);
            user.setUsername("石头");
            rabbitTemplate.convertAndSend("fanout_exchange", "", user);
        }
    }

     

  • 相关阅读:
    使用hooks实现的react的一个拖动小demo
    邻接矩阵和邻接链表存储
    版本的故事(五)闯关旅程
    从技术谈到管理,把系统优化的技术用到企业管理
    版本的故事(四)版本号有多重要
    版本的故事(三)取个好名字
    版本的故事(二)版本的诞生
    版本的故事(一)为什么要写版本的故事
    JAVA SQLServerException: 通过端口 1433 连接到主机 127.0.0.1 的 TCP/IP 连接失败
    js正则0-100之间的正整数
  • 原文地址:https://www.cnblogs.com/tszr/p/15917094.html
Copyright © 2020-2023  润新知