maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
</dependency>
配置文件
spring:
rabbitmq:
host: 127.0.0.1
port: 5672
username: root
password: root
virtual-host: /
注册配置信息
import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Create By zhk on 2019-12-26
*/
@Configuration
public class RibbitmqConfig {
public static final String ROUTINGKEY_EMAIL = "inform.#.email.#";
public static final String ROUTINGKEY_PHONE = "inform.#.phone.#";
public static final String EXCHANGE_TOPIC = "exchange";
public static final String QUEUE_EMAIL = "queue_email";
public static final String QUEUE_PHONE = "queue_phone";
//声明交换机
@Bean(EXCHANGE_TOPIC)
public Exchange EXCHANGE_TOPIC(){
return ExchangeBuilder.topicExchange(EXCHANGE_TOPIC).durable(true).build();
}
//声明队列
@Bean(QUEUE_EMAIL)
public Queue QUEUE_EMAIL(){
return new Queue(QUEUE_EMAIL);
}
@Bean(QUEUE_PHONE)
public Queue QUEUE_PHONE(){
return new Queue(QUEUE_PHONE);
}
//@Qualifier根据beanname注册
//绑定交换机
@Bean
public Binding bindingEmail(@Qualifier(QUEUE_EMAIL) Queue queue,@Qualifier(EXCHANGE_TOPIC) Exchange exchange){
return BindingBuilder.bind(queue).to(exchange).with(ROUTINGKEY_EMAIL).noargs();
}
@Bean
public Binding bindingPhone(@Qualifier(QUEUE_PHONE) Queue queue,@Qualifier(EXCHANGE_TOPIC) Exchange exchange){
return BindingBuilder.bind(queue).to(exchange).with(ROUTINGKEY_PHONE).noargs();
}
}
生产者
import org.junit.Test;
import org.junit.runner.RunWith;
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;
/**
* Create By zhk on 2019-12-26
*/
@SpringBootTest
@RunWith(SpringRunner.class)
public class Producer_Springboot {
@Autowired
RabbitTemplate rabbitTemplate;
@Test
public void sendEmail(){
String msg = "haha";
rabbitTemplate.convertAndSend(RibbitmqConfig.EXCHANGE_TOPIC,"inform.email",msg);
}
}
消费者
import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;
/**
* Create By zhk on 2019-12-26
*/
@Component
public class Consumer_Springboot {
@RabbitListener(queues = {RibbitmqConfig.QUEUE_EMAIL})
public void test(String msg, Message message, Channel channel){
System.out.println(msg);
}
}