首先在生产者和消费者中都添加两个依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
然后在生产者和消费者中都添加配置文件application.yml
server:
port: 44000
spring:
application:
name: test-rabbitmq-producer
rabbitmq:
host: 127.0.0.1
port: 5672
username: guest
passowrd: guest
virtualHost: /
编写生产者test-springBoot-producer的配置类RabbitMQConfig
import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class RabbitMQConfig {
//定义队列的名称
public static final String QUEUE_EMAIL="queue_topic_email";
public static final String QUEUE_SMS="queue_topic_sms";
//定义交换机的名称
public static final String EXCHANGE_TOPIC_INFORM="exchange_topic_inform";
//定义路由key的值
public static final String ROUTING_EMAIL="inform.#.email.#"; // inform.email
public static final String ROUTING_SMS="inform.#.sms.#";
//声明队列
@Bean(QUEUE_EMAIL)
public Queue QUEUE_EMAIL(){
Queue queue = new Queue(QUEUE_EMAIL);
return queue;
}
@Bean(QUEUE_SMS)
public Queue QUEUE_SMS(){
Queue queue = new Queue(QUEUE_SMS);
return queue;
}
//声明交换机
@Bean(EXCHANGE_TOPIC_INFORM)
public Exchange EXCHANGE_TOPIC_INFORM(){
return ExchangeBuilder.topicExchange(EXCHANGE_TOPIC_INFORM).durable(true).build();
}
//队列绑定交换机
@Bean
public Binding BIND_QUEUE_EMAIL(@Qualifier(QUEUE_EMAIL)Queue queue,@Qualifier(EXCHANGE_TOPIC_INFORM)Exchange exchange){
return BindingBuilder.bind(queue).to(exchange).with(ROUTING_EMAIL).noargs();
}
@Bean
public Binding BIND_QUEUE_SMS(@Qualifier(QUEUE_SMS)Queue queue,@Qualifier(EXCHANGE_TOPIC_INFORM)Exchange exchange){
return BindingBuilder.bind(queue).to(exchange).with(ROUTING_SMS).noargs();
}
}
编写test-springBoot-producer的启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class TestProducerApplication {
public static void main(String[] args) {
SpringApplication.run(TestProducerApplication.class,args);
}
}
编写消费者test-springBoot-consummer的监听类MyConsummer
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
@Component
public class MyConsumer {
//监听方法
@RabbitListener(queues = {"queue_topic_email"})
public void receiveEmailMessage(String message){
System.out.println("邮件队列:"+message);
}
@RabbitListener(queues = {"queue_topic_sms"})
public void receiveSmsMessage(String message){
System.out.println("短信队列:"+message);
}
}
配置test-springBoot-consummer的启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class TestConnsumerApplication {
public static void main(String[] args) {
SpringApplication.run(TestConnsumerApplication.class,args);
}
}
这样就整合完成了