Rabbitmq 入门工程

  • Post author:
  • Post category:其他


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);

}

}

在这里插入图片描述



版权声明:本文为qq_31411349原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。