rabbitmq producer 提供方
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-amqp
org.springframework.boot
spring-boot-starter-test
org.springframework.boot
spring-boot-starter-logging
com.alibaba
fastjson
创建RabbitmqConfig
@Configuration
public class RabbitmqConfig {
public static final String QUEUE_INFORM_EMAIL = “queue_inform_email”;
public static final String QUEUE_INFORM_SMS = “queue_inform_sms”;
public static final String EXCHANGE_TOPICS_INFORM=“exchange_topics_inform”;
public static final String ROUTINGKEY_EMAIL=“inform.#.email.#”;
public static final String ROUTINGKEY_SMS=“inform.#.sms.#”;
//声明交换机
@Bean(EXCHANGE_TOPICS_INFORM)
public Exchange EXCHANGE_TOPICS_INFORM(){
//durable(true) 持久化,mq重启之后交换机还在
return ExchangeBuilder.topicExchange(EXCHANGE_TOPICS_INFORM).durable(true).build();
}
//声明QUEUE_INFORM_EMAIL队列
@Bean(QUEUE_INFORM_EMAIL)
public Queue QUEUE_INFORM_EMAIL(){
return new Queue(QUEUE_INFORM_EMAIL);
}
//声明QUEUE_INFORM_SMS队列
@Bean(QUEUE_INFORM_SMS)
public Queue QUEUE_INFORM_SMS(){
return new Queue(QUEUE_INFORM_SMS);
}
//ROUTINGKEY_EMAIL队列绑定交换机,指定routingKey
@Bean
public Binding BINDING_QUEUE_INFORM_EMAIL(@Qualifier(QUEUE_INFORM_EMAIL) Queue queue,
@Qualifier(EXCHANGE_TOPICS_INFORM) Exchange exchange){
return BindingBuilder.bind(queue).to(exchange).with(ROUTINGKEY_EMAIL).noargs();
}
//ROUTINGKEY_SMS队列绑定交换机,指定routingKey
@Bean
public Binding BINDING_ROUTINGKEY_SMS(@Qualifier(QUEUE_INFORM_SMS) Queue queue,
@Qualifier(EXCHANGE_TOPICS_INFORM) Exchange exchange){
return BindingBuilder.bind(queue).to(exchange).with(ROUTINGKEY_SMS).noargs();
}
}
创建测试类
@SpringBootTest
@RunWith(SpringRunner.class)
public class RabbitmqConfigTest {
@Autowired
private RabbitTemplate rabbitTemplate;
String masseg = "send to email ,this";
/***
* 交换机名
* 路由
* 内容
*/
@Test
public void testSendTopic() {
rabbitTemplate.convertAndSend(RabbitmqConfig.EXCHANGE_TOPICS_INFORM, "inform.email", masseg);
}
}
2 消息接收方
test-rabbitmq-consumer
@Component
public class ReceiveHandler {
//接收邮件
@RabbitListener(queues = {RabbitmqConfig.QUEUE_INFORM_EMAIL})
public void send_email(String msg,Message message,Channel channel){
System.out.println(“receive message is:”+msg);
}
//接收短信
@RabbitListener(queues = {RabbitmqConfig.QUEUE_INFORM_SMS})
public void send_sms(String msg,Message message,Channel channel){
System.out.println(“receive message is:”+msg);
}
}