1,创建常量值,方便以后应用,(少打字,好用)
rabbitmq 发送消息大体模型
使用rabbitmq需要定义的常量有exchange,queue,由于我们使用的工作模式是topic模式(包含模式,我自己乱叫的)所以我还需要定义一个常量 routingkey
//队列通知邮箱
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添加的名称,使用的时候需要配合@Qualifier注解(修饰符,获取资格的人)
@Bean(EXCHANGE_TOPICS_INFORM)
public Exchange EXCHANGE_TOPICS_INFORM (){
//durable持久化,mq重启之后交换机是否还存在,
return
//好多新建的类程序员都喜欢搞个builder,不用去new()
ExchangeBuilder.topicExchange(EXCHANGE_TOPICS_INFORM).durable(true).build();
}
声明队列
//声明队列
//声明短信队列
@Bean(QUEUE_INFORM_SMS)
public Queue QUEUE_INFORM_SMS(){
return QueueBuilder.durable(QUEUE_INFORM_SMS).build();
}
//声明邮箱队列
@Bean(QUEUE_INFORM_EMAIL)
public Queue QUEUE_INFORM_EMAIL(){
return QueueBuilder.durable(QUEUE_INFORM_EMAIL).build();
}
绑定一下就能用了
//队列绑定交换机
//绑定email队列
@Bean
public Binding BINDING_QUEUE_INFORM_EMALL(@Qualifier(QUEUE_INFORM_EMAIL) Queue queue,@Qualifier(EXCHANGE_TOPICS_INFORM) Exchange exchange){
return BindingBuilder.bind(queue).to(exchange).with(ROUTINGKEY_EMAIL).noargs();
}
//绑定sms队列
@Bean
public Binding BINDING_QUEUE_INFORM_SMS(@Qualifier(QUEUE_INFORM_SMS) Queue queue,@Qualifier(EXCHANGE_TOPICS_INFORM) Exchange exchange){
return BindingBuilder.bind(queue).to(exchange).with(ROUTINGKEY_SMS).noargs();
}