一、创建用户并授权
创建用户
rabbitmqctl add_user admin admin
设置管理员
rabbitmqctl set_user_tags admin administrator
设置权限
rabbitmqctl set_permissions -p / admin "." "." ".*"
二、在yml文件配置
rabbitmq:
username: admin
password: admin
virtual-host: /
host: 10.73.100.154
port: 5672
三、写个配置RabbitMq工具类
1.fanout模式
@Configuration
public class RabbitMqConfiguration {
/**
* 声明fanout模式的交换机
*/
@Bean
public FanoutExchange fanoutExchange(){
return new FanoutExchange("ex",true,false);
}
/**
* 声明相应的队列
*/
@Bean
public Queue queue(){
return new Queue("xin",true);
}
/**
* 完成绑定关系(交换机和队列的绑定关系)
*/
@Bean
public Binding binding(){
return BindingBuilder.bind(queue()).to(fanoutExchange());
}
}
2.direct模式
@Configuration
public class RabbitMqDirectConfiguration {
/**
* 声明direct模式的交换机
*/
@Bean
public DirectExchange directExchange(){
return new DirectExchange("direct",true,false);
}
/**
* 声明相应的队列
*/
@Bean
public Queue queue(){
return new Queue("route.queue",true);
}
/**
* 完成绑定关系(交换机和队列的绑定关系)
*/
@Bean
public Binding binding(){
return BindingBuilder.bind(queue()).to(directExchange()).with("route");
}
}
四、发送消息队列
@Service
public class RabbitTest {
@Autowired
private RabbitTemplate rabbitTemplate;
public void test(){
String order = UUID.randomUUID().toString();
//参数:1交换机、2路由key或队列、3消息内容
String ex = "ex";//交换机
String route = "";//路由(direct加上路由key就行) (topic模式的参数 #(0个或多个),*(至少要有一个))
rabbitTemplate.convertAndSend(ex,route,order);
}
}
五、然后启动测试类就交换机和队列就绑定上了,下面是启动前的
启动后的
六、接受消息队列
七.使用注解
生产者
@Service
public class RabbitTestP {
@Autowired
private RabbitTemplate rabbitTemplate;
public void test(){
String order = UUID.randomUUID().toString();
//参数:1交换机、2路由key或队列、3消息内容
String ex = "direct";//交换机
String route = "route";//路由key或者模糊查询的条件
rabbitTemplate.convertAndSend(ex,route,order);
}
}
消费者
@Component
@RabbitListener(bindings = @QueueBinding(
//1、队列名字 2、是否持久化 3、使用完是否自动删除
value = @Queue(value = "queue",durable = "true",autoDelete = "false"),
//1、交换机名字 2、模式类型
exchange = @Exchange(value = "ex",type = ExchangeTypes.TOPIC),
//和数据库的模糊查询一个意思 #(0个或多个),*(至少要有一个)
key = "#s*"
))
public class RabbitTestC {
@RabbitHandler
public void reviceInfo(String info){
System.out.println("消息" + info);
}
}
测试类
@SpringBootTest
class RabbitMqApplicationTests {
@Autowired
private RabbitTestP rabbitTestP;
@Test
void contextLoads() {
rabbitTestP.test();
}
}